triblespace_core/blob/
encodings.rs1pub mod array;
5pub mod longstring;
7pub mod rawbytes;
9pub mod simplearchive;
11pub mod succinctarchive;
13pub mod wasmcode;
15
16use crate::inline::Encodes;
17use anybytes::Bytes;
18
19use crate::blob::BlobEncoding;
20use crate::id_hex;
21use crate::macros::entity;
22use crate::metadata::{self, MetaDescribe};
23
24use super::Blob;
25use super::TryFromBlob;
26
27pub struct UnknownBlob;
34impl BlobEncoding for UnknownBlob {}
35
36impl MetaDescribe for UnknownBlob {
37 fn describe() -> crate::trible::Fragment {
38 let id = id_hex!("EAB14005141181B0C10C4B5DD7985F8D");
42 entity! { crate::id::ExclusiveId::force_ref(&id) @
43 metadata::name: "UnknownBlob",
44 metadata::description: "Fallback blob encoding for byte payloads with no known type. Discouraged in practice — use a specific blob encoding (e.g. `LongString`, `Array<T>`, `SimpleArchive`) instead.",
45 metadata::tag: metadata::KIND_BLOB_ENCODING,
46 }
47 }
48}
49
50impl TryFromBlob<UnknownBlob> for Bytes {
51 type Error = std::convert::Infallible;
52
53 fn try_from_blob(blob: Blob<UnknownBlob>) -> Result<Self, Self::Error> {
54 Ok(blob.bytes)
55 }
56}
57
58impl Encodes<Bytes> for UnknownBlob
59where crate::inline::encodings::hash::Handle<UnknownBlob>: crate::inline::InlineEncoding,
60{
61 type Output = Blob<UnknownBlob>;
62 fn encode(source: Bytes) -> Blob<UnknownBlob> {
63 Blob::new(source)
64 }
65}