指纹

枚举 Fingerprint 

源代码
pub enum Fingerprint {
    Rabin(u64),
    Id(u32),
    Id64(u64),
    MD5([u8; 16]),
    SHA256([u8; 32]),
}
展开描述

支持格式之一的模式指纹。

这用作 SchemaStore HashMap 内部的键。每个 SchemaStore 实例总是只存储一个变体,与其配置的 FingerprintAlgorithm 匹配,但枚举使 API 保持统一。

https://avro.apache.org/docs/1.11.1/specification/#schema-fingerprints https://docs.confluent.io/platform/current/schema-registry/fundamentals/serdes-develop/index.html#wire-format

变体§

§

Rabin(u64)

一个 64 位 Rabin 指纹。

§

Id(u32)

一个 32 位 Schema Registry ID。

§

Id64(u64)

一个 64 位 Schema Registry ID。

§

MD5([u8; 16])

一个 128 位 MD5 指纹。

§

SHA256([u8; 32])

一个 256 位 SHA-256 指纹。

实现§

来源§

impl Fingerprint

源代码

pub fn load_fingerprint_id(id: u32) -> Self

加载 32 位 Schema Registry 指纹(Confluent Schema Registry ID)。

提供的 id 是大端字节序;这会将其转换为主机字节序并返回 Fingerprint::Id

§返回

包含 32 位指纹的 Fingerprint::Id 变体。

源代码

pub fn load_fingerprint_id64(id: u64) -> Self

加载 64 位 Schema Registry 指纹(Apicurio Schema Registry ID)。

提供的 id 是大端字节序;这会将其转换为主机字节序并返回 Fingerprint::Id64

§返回

包含 64 位指纹的 Fingerprint::Id64 变体。

源代码

pub(crate) fn make_prefix(&self) -> Prefix

根据枚举的变体构造表示为 Vec<u8> 的序列化前缀。

此方法根据 self 的变体以不同格式序列化数据

  • Id(id):使用 Confluent 线缆格式,其中包括预定义的魔术头 (CONFLUENT_MAGIC),后跟 id 的大端字节表示。
  • Id64(id):使用 Apicurio 线缆格式,其中包括预定义的魔术头 (CONFLUENT_MAGIC),后跟 id 的大端 8 字节表示。
  • Rabin(val):使用 Avro 单对象规范格式。这包括不同的魔术头 (SINGLE_OBJECT_MAGIC),后跟 val 的小端字节表示。
  • MD5(bytes)(可选,启用 md5 功能):一个非标准扩展,添加 SINGLE_OBJECT_MAGIC 头,后跟提供的 bytes
  • SHA256(bytes)(可选,启用 sha256 功能):类似于 MD5 变体,这是一个非标准扩展,附加 SINGLE_OBJECT_MAGIC 头,后跟给定的 bytes
§返回

包含序列化前缀数据的 Prefix

§功能
  • 您可以选择启用 md5 功能以包含 MD5 变体。
  • 您可以选择启用 sha256 功能以包含 SHA256 变体。

Trait 实现§

来源§

impl Clone for Fingerprint

来源§

fn clone(&self) -> Fingerprint

返回值的副本。 阅读更多
1.0.0 · §

fn clone_from(&mut self, source: &Self)

执行从 source 的复制赋值。 阅读更多
来源§

impl Debug for Fingerprint

来源§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

使用给定的格式化程序格式化值。 阅读更多
来源§

impl From<&Fingerprint> for FingerprintAlgorithm

允许轻松提取用于创建指纹的算法。

来源§

fn from(fp: &Fingerprint) -> Self

从输入类型转换为此类型。
来源§

impl From<&Fingerprint> for FingerprintStrategy

来源§

fn from(f: &Fingerprint) -> Self

从输入类型转换为此类型。
来源§

impl From<&FingerprintStrategy> for Fingerprint

来源§

fn from(s: &FingerprintStrategy) -> Self

从输入类型转换为此类型。
来源§

impl From<Fingerprint> for FingerprintStrategy

来源§

fn from(f: Fingerprint) -> Self

从输入类型转换为此类型。
来源§

impl From<FingerprintAlgorithm> for Fingerprint

来源§

fn from(s: FingerprintAlgorithm) -> Self

从输入类型转换为此类型。
来源§

impl From<FingerprintStrategy> for Fingerprint

来源§

fn from(s: FingerprintStrategy) -> Self

从输入类型转换为此类型。
来源§

impl Hash for Fingerprint

来源§

fn hash<__H: Hasher>(&self, state: &mut __H)

将此值馈送到给定的 Hasher 中。阅读更多
1.3.0 · §

fn hash_slice<H>(data: &[Self], state: &mut H)
其中 H: Hasher, Self: Sized,

将此类型的切片馈送到给定的 Hasher 中。阅读更多
来源§

impl PartialEq for Fingerprint

来源§

fn eq(&self, other: &Fingerprint) -> bool

测试 selfother 值是否相等,并由 == 使用。
1.0.0 · §

fn ne(&self, other: &Rhs) -> bool

测试 !=。默认实现几乎总是足够的,不应在没有充分理由的情况下重写。
来源§

impl Copy for Fingerprint

来源§

impl Eq for Fingerprint

来源§

impl StructuralPartialEq for Fingerprint

自动 Trait 实现§

通用实现§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

获取 selfTypeId阅读更多
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

从拥有的值进行不可变借用。 阅读更多
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

从拥有的值进行可变借用。 阅读更多
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬这是一个仅限 nightly 的实验性 API。(clone_to_uninit
执行从 selfdest 的复制赋值。 阅读更多
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

检查此值是否与给定键等效。 阅读更多
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

将 self 与 key 进行比较,如果它们相等则返回 true
§

impl<T> From<T> for T

来源§

fn from(t: T) -> T

返回未更改的参数。

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

调用 U::from(self)

也就是说,此转换是 From<T> for U 的实现选择执行的任何操作。

§

impl<T> Same for T

§

type Output = T

应该总是 Self
§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

获取所有权后的结果类型。
§

fn to_owned(&self) -> T

从借用的数据创建拥有的数据,通常通过克隆。 阅读更多
§

fn clone_into(&self, target: &mut T)

使用借用的数据替换拥有的数据,通常通过克隆。 阅读更多
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

转换错误时返回的类型。
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

执行转换。
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

转换错误时返回的类型。
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

执行转换。
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,