pub struct ByteStream(/* private fields */);
Expand description
Untyped byte stream used for both success and error responses.
Implementations§
Source§impl ByteStream
impl ByteStream
Methods from Deref<Target = Pin<Box<dyn Stream<Item = Result<Bytes>> + Send + Sync>>>§
1.33.0 · Sourcepub fn as_ref(&self) -> Pin<&<Ptr as Deref>::Target>
pub fn as_ref(&self) -> Pin<&<Ptr as Deref>::Target>
Gets a shared reference to the pinned value this Pin
points to.
This is a generic method to go from &Pin<Pointer<T>>
to Pin<&T>
.
It is safe because, as part of the contract of Pin::new_unchecked
,
the pointee cannot move after Pin<Pointer<T>>
got created.
“Malicious” implementations of Pointer::Deref
are likewise
ruled out by the contract of Pin::new_unchecked
.
1.33.0 · Sourcepub fn as_mut(&mut self) -> Pin<&mut <Ptr as Deref>::Target>
pub fn as_mut(&mut self) -> Pin<&mut <Ptr as Deref>::Target>
Gets a mutable reference to the pinned value this Pin<Ptr>
points to.
This is a generic method to go from &mut Pin<Pointer<T>>
to Pin<&mut T>
.
It is safe because, as part of the contract of Pin::new_unchecked
,
the pointee cannot move after Pin<Pointer<T>>
got created.
“Malicious” implementations of Pointer::DerefMut
are likewise
ruled out by the contract of Pin::new_unchecked
.
This method is useful when doing multiple calls to functions that consume the pinning pointer.
§Example
use std::pin::Pin;
impl Type {
fn method(self: Pin<&mut Self>) {
// do something
}
fn call_method_twice(mut self: Pin<&mut Self>) {
// `method` consumes `self`, so reborrow the `Pin<&mut Self>` via `as_mut`.
self.as_mut().method();
self.as_mut().method();
}
}
1.84.0 · Sourcepub fn as_deref_mut(
self: Pin<&mut Pin<Ptr>>,
) -> Pin<&mut <Ptr as Deref>::Target>
pub fn as_deref_mut( self: Pin<&mut Pin<Ptr>>, ) -> Pin<&mut <Ptr as Deref>::Target>
Gets Pin<&mut T>
to the underlying pinned value from this nested Pin
-pointer.
This is a generic method to go from Pin<&mut Pin<Pointer<T>>>
to Pin<&mut T>
. It is
safe because the existence of a Pin<Pointer<T>>
ensures that the pointee, T
, cannot
move in the future, and this method does not enable the pointee to move. “Malicious”
implementations of Ptr::DerefMut
are likewise ruled out by the contract of
Pin::new_unchecked
.
1.33.0 · Sourcepub fn set(&mut self, value: <Ptr as Deref>::Target)
pub fn set(&mut self, value: <Ptr as Deref>::Target)
Assigns a new value to the memory location pointed to by the Pin<Ptr>
.
This overwrites pinned data, but that is okay: the original pinned value’s destructor gets
run before being overwritten and the new value is also a valid value of the same type, so
no pinning invariant is violated. See the pin
module documentation
for more information on how this upholds the pinning invariants.
§Example
use std::pin::Pin;
let mut val: u8 = 5;
let mut pinned: Pin<&mut u8> = Pin::new(&mut val);
println!("{}", pinned); // 5
pinned.set(10);
println!("{}", pinned); // 10
Trait Implementations§
Source§impl Deref for ByteStream
impl Deref for ByteStream
Auto Trait Implementations§
impl Freeze for ByteStream
impl !RefUnwindSafe for ByteStream
impl Send for ByteStream
impl Sync for ByteStream
impl Unpin for ByteStream
impl !UnwindSafe for ByteStream
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more