hara_native/lang/protocol/
imetadata.rs1use 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}