Skip to main content

tpack_core/
registry.rs

1use alloc::sync::Arc;
2
3use crate::Schema;
4
5pub trait SchemaRegistry {
6    fn get(&self, schema_id: &[u8]) -> Option<Arc<Schema>>;
7}
8
9#[derive(Debug, Clone, Copy, Default)]
10pub struct EmptyRegistry;
11
12impl SchemaRegistry for EmptyRegistry {
13    fn get(&self, _schema_id: &[u8]) -> Option<Arc<Schema>> {
14        None
15    }
16}
17
18pub fn empty_registry() -> EmptyRegistry {
19    EmptyRegistry
20}
21
22impl<T: SchemaRegistry + ?Sized> SchemaRegistry for &T {
23    fn get(&self, schema_id: &[u8]) -> Option<Arc<Schema>> {
24        (**self).get(schema_id)
25    }
26}