pub enum Buffer {
VmoId(u64),
Data(Vec<u8>),
// some variants omitted
}Expand description
Data buffer. There are two supported ways data may be conveyed, corresponding to the two members of the Buffer union:
- vmo_id: Pre-registered VMO. A driver may preregister VMOs using the fuchsia.hardware.usb.endpoint.Endpoint::RegisterVmos method. These VMOs are saved by the underlying USB driver in correspondence to the given vmo_id. Future Requests may refer to this by the unique vmo_id. Because VMOs are reused across Requests and saved by the underlying driver, each VMO only needs to be pinned/unpinned once.
- data: A data buffer for data that is not associated with a VMO. The underlying USB driver should allocate its own VMO, copy the data from the buffer, and pin the VMO. This should not be used often and not for large amounts of data.
Variants§
VmoId(u64)
The ID of a VMO that was previously registered.
Data(Vec<u8>)
Embedded data buffer to copy data to/from.
Implementations§
Trait Implementations§
Source§impl Decode<Buffer, DefaultFuchsiaResourceDialect> for Buffer
impl Decode<Buffer, DefaultFuchsiaResourceDialect> for Buffer
Source§impl ResourceTypeMarker for Buffer
impl ResourceTypeMarker for Buffer
Source§type Borrowed<'a> = &'a mut Buffer
type Borrowed<'a> = &'a mut Buffer
The Rust type to use for encoding. This is a particular
Encode<Self>
type cheaply obtainable from &mut Self::Owned. There are three cases: Read moreSource§fn take_or_borrow<'a>(
value: &'a mut <Self as TypeMarker>::Owned,
) -> Self::Borrowed<'a>
fn take_or_borrow<'a>( value: &'a mut <Self as TypeMarker>::Owned, ) -> Self::Borrowed<'a>
Cheaply converts from
&mut Self::Owned to Self::Borrowed. For
HandleBased types this is “take” (it returns an owned handle and
replaces value with Handle::invalid), and for all other types it is
“borrow” (just converts from one reference to another).impl Standalone<DefaultFuchsiaResourceDialect> for Buffer
Source§impl TypeMarker for Buffer
impl TypeMarker for Buffer
Source§fn inline_align(_context: Context) -> usize
fn inline_align(_context: Context) -> usize
Returns the minimum required alignment of the inline portion of the
encoded object. It must be a (nonzero) power of two.
Source§fn inline_size(_context: Context) -> usize
fn inline_size(_context: Context) -> usize
Returns the size of the inline portion of the encoded object, including
padding for alignment. Must be a multiple of
inline_align.Source§fn encode_is_copy() -> bool
fn encode_is_copy() -> bool
Returns true if the memory layout of
Self::Owned matches the FIDL wire
format and encoding requires no validation. When true, we can optimize
encoding arrays and vectors of Self::Owned to a single memcpy. Read moreSource§fn decode_is_copy() -> bool
fn decode_is_copy() -> bool
Returns true if the memory layout of
Self::Owned matches the FIDL wire
format and decoding requires no validation. When true, we can optimize
decoding arrays and vectors of Self::Owned to a single memcpy.Auto Trait Implementations§
impl Freeze for Buffer
impl RefUnwindSafe for Buffer
impl Send for Buffer
impl Sync for Buffer
impl Unpin for Buffer
impl UnsafeUnpin for Buffer
impl UnwindSafe for Buffer
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
Mutably borrows from an owned value. Read more