Expand description
FIDL encoding and decoding.
Macros
- Asserts that constants are equal in value.
Structs
- A fake FIDL type that can encode from and decode into any Rust type. This exists solely to prevent the compiler from inferring
T: TypeMarker
, allowing us to add new generic impls without source breakage. It also improves error messages when no suitableT: TypeMarker
exists, preventing spurious guesses about what you should do (e.g. implementHandleBased
). - Like
Ambiguous1
. There needs to be two of these types so that the compiler doesn’t infer one of them and generate a call to the panicking methods. - The FIDL type
array<T, N>
. - Bitflags type for transaction header at-rest flags.
- The FIDL type
string:N
. - The FIDL type
box<T>
. - Context for encoding and decoding.
- Decoding state
- Bitflags type to flags that aid in dynamically identifying features of the request.
- A FIDL type representing an empty payload (0 bytes).
- The FIDL type used for an empty success variant in a result union. Result unions occur in two-way methods that are flexible or that use error syntax.
- Encoding state
- The body of a FIDL Epitaph
- The FIDL union generated for flexible two-way methods with errors.
- The FIDL union generated for flexible two-way methods without errors.
- A struct which encodes as
GenericMessageType<H, T>
whereE: Encode<T>
. - The FIDL type for a message consisting of a header
H
and bodyT
. - The FIDL type
zx.Handle:<OBJECT_TYPE, RIGHTS>
, or aclient_end
orserver_end
. - The FIDL type
T:optional
whereT
is a vector, string, handle, or client/server end. - The FIDL type
T:optional
whereT
is a union. - The FIDL union generated for strict two-way methods with errors.
- Header for transactional FIDL messages
- The FIDL type
vector<T>:N
.
Enums
- An uninhabited type used as owned and borrowed type for ambiguous markers. Can be replaced by
!
once that is stable. - Internal FIDL framework error type used to identify unknown methods.
- The owned type for
GenericMessageType
is uninhabited because we never decode full messages. We decode the header and body separately, as we usually we don’t know the body’s type until after we’ve decoded the header. - Wire format version to use during encode / decode.
Constants
- Indicates that an optional value is absent.
- Indicates that an optional value is absent.
- Indicates that an optional value is present.
- Indicates that an optional value is present.
- Special ordinal signifying an epitaph message.
- The current wire format magic number
- The maximum vector bound, corresponding to the
MAX
constraint in FIDL. - The maximum number of handles allowed in a FIDL message. Note that this number is one less for large messages for the time being. See (fxbug.dev/117162) for progress, or to report problems caused by this specific limitation.
- The maximum recursion depth of encoding and decoding. Each pointer to an out-of-line object counts as one step in the recursion depth.
Traits
- A Rust type that can be decoded from the FIDL type
T
. - A Rust type that can be encoded as the FIDL type
T
. - A FIDL resource type marker.
- A FIDL type marker.
- A FIDL value type marker.
Functions
- Decodes the transaction header from a message. Returns the header and a reference to the tail of the message.
- Acquire a mutable reference to the thread-local buffers used for decoding.
- Acquire a mutable reference to the thread-local buffers used for encoding.
- Encodes the provided type into the thread-local encoding buffers.
Type Aliases
- An abbreviation of
HandleType
that for channels with default rights, used for the FIDL typesclient_end:P
andserver_end:P
. - A struct which encodes as
TransactionMessageType<T>
whereE: Encode<T>
. - The FIDL type for a transaction message with body
T
. - The FIDL type
string
orstring:MAX
. - The FIDL type
vector<T>
orvector<T>:MAX
.