Skip to main content

Encodes

Trait Encodes 

Source
pub trait Encodes<Source> {
    type Output;

    // Required method
    fn encode(source: Source) -> Self::Output;
}
Expand description

User-implemented schema-side encoding trait, in the From direction: the schema is the impl target, the source is the trait parameter.

impl Encodes<&str> for LongString {
    type Output = Blob<LongString>;
    fn encode(s: &str) -> Blob<LongString> { Blob::new(s.into()) }
}

This is the canonical orphan-rule shape (mirroring From<T> in std): downstream that defines a local MyBlobEncoding writes impl Encodes<ForeignType> for MyBlobEncoding — the local encoding sits at the impl-target position so Rust’s orphan checker trivially accepts the impl, no matter how foreign the source type is.

The user-facing source-side ergonomic — source.into_encoded() / source.to_inline() / source.to_blob() — is blanket-derived from this trait via IntoEncoded.

Required Associated Types§

Source

type Output

The concrete form this source produces when encoded for this schema. Inline<Self> for inline encodings, Blob<Self> for blob encodings, or Inline<Handle<Self>> for the precomputed-handle case where Self: BlobEncoding.

Required Methods§

Source

fn encode(source: Source) -> Self::Output

Run the encoding.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl Encodes<&'static str> for LongString

Source§

impl Encodes<&ExclusiveId> for GenId

Source§

impl Encodes<&Id> for GenId

Source§

impl Encodes<&OwnedId<'_>> for GenId

Source§

impl Encodes<&String> for ShortString

Source§

impl Encodes<&TribleSet> for SimpleArchive

Source§

impl Encodes<&[u8; 16]> for GenId

Source§

impl Encodes<&[u8]> for RawBytes

Source§

impl Encodes<&[u8]> for WasmCode

Source§

impl Encodes<&bool> for Boolean

Source§

impl Encodes<&str> for ShortString

Source§

impl Encodes<(u64, u64, u64, u64)> for LineLocation

Source§

impl Encodes<(u128, u128)> for RangeInclusiveU128

Source§

impl Encodes<(u128, u128)> for RangeU128

Source§

impl Encodes<Bytes> for RawBytes

Source§

impl Encodes<Bytes> for UnknownBlob

Source§

impl Encodes<Bytes> for WasmCode

Source§

impl Encodes<Duration> for NsDuration

Source§

impl Encodes<ExclusiveId> for GenId

Source§

impl Encodes<I256> for I256BE

Source§

impl Encodes<I256> for I256LE

Source§

impl Encodes<Id> for GenId

Source§

impl Encodes<OwnedId<'_>> for GenId

Source§

impl Encodes<Ratio<i128>> for R256BE

Source§

impl Encodes<Ratio<i128>> for R256LE

Source§

impl Encodes<Signature> for ED25519RComponent

Source§

impl Encodes<Signature> for ED25519SComponent

Source§

impl Encodes<Span> for LineLocation

Source§

impl Encodes<String> for LongString

Source§

impl Encodes<String> for ShortString

Source§

impl Encodes<TribleSet> for SimpleArchive

Source§

impl Encodes<U256> for U256BE

Source§

impl Encodes<U256> for U256LE

Source§

impl Encodes<Vec<u8>> for RawBytes

Source§

impl Encodes<Vec<u8>> for WasmCode

Source§

impl Encodes<VerifyingKey> for ED25519PublicKey

Source§

impl Encodes<View<str>> for LongString

Source§

impl Encodes<[u8; 16]> for GenId

Source§

impl Encodes<[u8; 32]> for ED25519RComponent

Source§

impl Encodes<[u8; 32]> for ED25519SComponent

Source§

impl Encodes<bool> for Boolean

Source§

impl Encodes<f64> for F64

Source§

impl Encodes<f256> for F256BE

Source§

impl Encodes<f256> for F256LE

Source§

impl Encodes<i8> for I256BE

Source§

impl Encodes<i8> for I256LE

Source§

impl Encodes<i16> for I256LE

Source§

impl Encodes<i32> for I256BE

Source§

impl Encodes<i32> for I256LE

Source§

impl Encodes<i64> for I256BE

Source§

impl Encodes<i64> for I256LE

Source§

impl Encodes<i128> for I256BE

Source§

impl Encodes<i128> for I256LE

Source§

impl Encodes<i128> for NsDuration

Source§

impl Encodes<i128> for R256BE

Source§

impl Encodes<i128> for R256LE

Source§

impl Encodes<u8> for U256BE

Source§

impl Encodes<u8> for U256LE

Source§

impl Encodes<u16> for U256BE

Source§

impl Encodes<u16> for U256LE

Source§

impl Encodes<u32> for U256BE

Source§

impl Encodes<u32> for U256LE

Source§

impl Encodes<u64> for U256BE

Source§

impl Encodes<u64> for U256LE

Source§

impl Encodes<u128> for U256BE

Source§

impl Encodes<u128> for U256LE

Source§

impl<S: BlobEncoding> Encodes<Blob<S>> for S

Blob<S> is the identity source for [IntoEncoded<S>] in the blob path: it converts to itself with no allocation, and the cached handle inside lets every downstream step skip rehashing.

Source§

impl<S: InlineEncoding> Encodes<&Inline<S>> for S

Source§

impl<S: InlineEncoding> Encodes<Inline<S>> for S

Source§

impl<T: ArrayElement> Encodes<Vec<<T as ArrayElement>::Native>> for Array<T>

Store a Vec<T::Native> as an Array<T> blob (zero-copy via ByteSource).

Source§

impl<T: BlobEncoding> Encodes<&Inline<Handle<T>>> for T

Reference form of the precomputed-handle case.

Source§

impl<T: BlobEncoding> Encodes<Inline<Handle<T>>> for T

Precomputed-handle case: a Inline<Handle<T>> can be passed as a IntoEncoded<T> source (T is the BlobEncoding, matching the Handle<T>-attributed field’s Encoding). Output is the value itself; no side-blob — caller asserts the bytes live somewhere resolvable.

Source§

impl<U> Encodes<&SuccinctArchive<U>> for SuccinctArchiveBlob

Source§

impl<U> Encodes<SuccinctArchive<U>> for SuccinctArchiveBlob