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", so this trait is not object safe.

Implementors§

Source§

impl Encodes<&'static str> for LongString

Source§

impl Encodes<&bool> for Boolean

Source§

impl Encodes<&str> for ShortString

Source§

impl Encodes<&ExclusiveId> for GenId

Source§

impl Encodes<&Id> for GenId

Source§

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

Source§

impl Encodes<&TribleSet> for SimpleArchive

Source§

impl Encodes<&String> for ShortString

Source§

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

Source§

impl Encodes<&[u8]> for RawBytes

Source§

impl Encodes<&[u8]> for WasmCode

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<bool> for Boolean

Source§

impl Encodes<f64> for F64

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 R256BE

Source§

impl Encodes<i128> for R256LE

Source§

impl Encodes<i128> for NsDuration

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 Encodes<Bytes> for RawBytes

Source§

impl Encodes<Bytes> for UnknownBlob

Source§

impl Encodes<Bytes> for WasmCode

Source§

impl Encodes<ExclusiveId> for GenId

Source§

impl Encodes<Id> for GenId

Source§

impl Encodes<OwnedId<'_>> for GenId

Source§

impl Encodes<View<str>> for LongString

Source§

impl Encodes<TribleSet> for SimpleArchive

Source§

impl Encodes<VerifyingKey> for ED25519PublicKey

Source§

impl Encodes<String> for LongString

Source§

impl Encodes<String> for ShortString

Source§

impl Encodes<Vec<u8>> for RawBytes

Source§

impl Encodes<Vec<u8>> for WasmCode

Source§

impl Encodes<Span> for LineLocation

Source§

impl Encodes<Signature> for ED25519RComponent

Source§

impl Encodes<Signature> for ED25519SComponent

Source§

impl Encodes<I256> for I256BE

Source§

impl Encodes<I256> for I256LE

Source§

impl Encodes<U256> for U256BE

Source§

impl Encodes<U256> for U256LE

Source§

impl Encodes<f256> for F256BE

Source§

impl Encodes<f256> for F256LE

Source§

impl Encodes<Duration> for NsDuration

Source§

impl Encodes<Ratio<i128>> for R256BE

Source§

impl Encodes<Ratio<i128>> for R256LE

Source§

impl Encodes<[u8; 16]> for GenId

Source§

impl Encodes<[u8; 32]> for ED25519RComponent

Source§

impl Encodes<[u8; 32]> for ED25519SComponent

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