Skip to main content

hara_native/lang/protocol/
imetadata.rs

1use hara_protocol_macros::hara_protocol;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4pub enum MetaType {
5    Object,
6    Map,
7    String,
8}
9
10#[hara_protocol(
11    namespace = "std.protocol.imetadata",
12    name = "IMetadata",
13    availability = "portable"
14)]
15pub trait IMetadata: Sized {
16    type Metadata: Clone;
17
18    fn meta(&self) -> Option<&Self::Metadata>;
19    fn with_meta(&self, metadata: Option<Self::Metadata>) -> Self;
20
21    #[hara_method(value = "metatype", arity = 1)]
22    fn metatype(&self) -> MetaType {
23        MetaType::Object
24    }
25}