spacetimedb_schema/
reducer_name.rs1use crate::identifier::Identifier;
2use core::fmt;
3use core::ops::Deref;
4use spacetimedb_sats::raw_identifier::RawIdentifier;
5
6#[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}