Skip to main content

spacetimedb_schema/
reducer_name.rs

1use crate::identifier::Identifier;
2use core::fmt;
3use core::ops::Deref;
4use spacetimedb_sats::raw_identifier::RawIdentifier;
5
6/// The name of a reducer.
7#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
8pub struct ReducerName(pub Identifier);
9
10impl ReducerName {
11    pub fn new(id: Identifier) -> Self {
12        Self(id)
13    }
14
15    pub fn for_test(name: &str) -> Self {
16        Self(Identifier::for_test(name))
17    }
18
19    pub fn as_identifier(&self) -> &Identifier {
20        &self.0
21    }
22}
23
24impl Deref for ReducerName {
25    type Target = str;
26
27    fn deref(&self) -> &Self::Target {
28        &self.0
29    }
30}
31
32impl AsRef<str> for ReducerName {
33    fn as_ref(&self) -> &str {
34        &self.0
35    }
36}
37
38impl From<ReducerName> for Identifier {
39    fn from(id: ReducerName) -> Self {
40        id.0
41    }
42}
43
44impl From<ReducerName> for RawIdentifier {
45    fn from(id: ReducerName) -> Self {
46        Identifier::from(id).into()
47    }
48}
49
50impl fmt::Debug for ReducerName {
51    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
52        fmt::Debug::fmt(&self.0, f)
53    }
54}
55
56impl fmt::Display for ReducerName {
57    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
58        fmt::Display::fmt(&self.0, f)
59    }
60}