1use crate::ur::UR;
2
3use dcbor::CBORTaggedEncodable;
4
5pub trait UREncodable: CBORTaggedEncodable {
7 fn ur(&self) -> UR {
9 let tag = &Self::cbor_tags()[0];
10 if let Some(name) = tag.name().as_ref() {
11 UR::new(name.clone(), self.untagged_cbor()).unwrap()
12 } else {
13 panic!("CBOR tag {} must have a name. Did you call `register_tags()`?", tag.value());
14 }
15 }
16
17 fn ur_string(&self) -> String {
19 self.ur().string()
20 }
21}
22
23impl<T> UREncodable for T where T: CBORTaggedEncodable { }