use std::borrow::Cow; use std::pin::Pin; use crate::stream::{Extend, FromStream, IntoStream}; impl FromStream for String { #[inline] fn from_stream<'a, S: IntoStream>( stream: S, ) -> Pin + 'a>> where ::IntoStream: 'a, { let stream = stream.into_stream(); Box::pin(async move { pin_utils::pin_mut!(stream); let mut out = String::new(); out.stream_extend(stream).await; out }) } } impl<'b> FromStream<&'b char> for String { #[inline] fn from_stream<'a, S: IntoStream>( stream: S, ) -> Pin + 'a>> where ::IntoStream: 'a, { let stream = stream.into_stream(); Box::pin(async move { pin_utils::pin_mut!(stream); let mut out = String::new(); out.stream_extend(stream).await; out }) } } impl<'b> FromStream<&'b str> for String { #[inline] fn from_stream<'a, S: IntoStream>( stream: S, ) -> Pin + 'a>> where ::IntoStream: 'a, { let stream = stream.into_stream(); Box::pin(async move { pin_utils::pin_mut!(stream); let mut out = String::new(); out.stream_extend(stream).await; out }) } } impl FromStream for String { #[inline] fn from_stream<'a, S: IntoStream>( stream: S, ) -> Pin + 'a>> where ::IntoStream: 'a, { let stream = stream.into_stream(); Box::pin(async move { pin_utils::pin_mut!(stream); let mut out = String::new(); out.stream_extend(stream).await; out }) } } impl<'b> FromStream> for String { #[inline] fn from_stream<'a, S: IntoStream>>( stream: S, ) -> Pin + 'a>> where ::IntoStream: 'a, { let stream = stream.into_stream(); Box::pin(async move { pin_utils::pin_mut!(stream); let mut out = String::new(); out.stream_extend(stream).await; out }) } }