pub trait TagsStoreTrait {
// Required methods
fn assigned_name_for_tag(&self, tag: &Tag) -> Option<String>;
fn name_for_tag(&self, tag: &Tag) -> String;
fn tag_for_value(&self, value: TagValue) -> Option<Tag>;
fn tag_for_name(&self, name: &str) -> Option<Tag>;
fn name_for_value(&self, value: TagValue) -> String;
fn summarizer(&self, tag: TagValue) -> Option<&CBORSummarizer>;
// Provided method
fn name_for_tag_opt<T>(tag: &Tag, tags: Option<&T>) -> String
where T: TagsStoreTrait,
Self: Sized { ... }
}Expand description
A trait for types that can map between CBOR tags and their human-readable names.
The TagsStoreTrait provides a standardized interface for resolving CBOR
tags to human-readable names and vice versa. This is useful for debugging
and displaying CBOR data in a more understandable format.
§Functionality
This trait defines methods for:
- Converting between tag numbers and human-readable names
- Looking up tags by name or value
- Retrieving summarizers for specific tags
§Implementation
Implementers of this trait should maintain a bidirectional mapping between
tag values (numbers) and their corresponding names. The primary
implementation is TagsStore, but other implementations can be created
for specific needs.
§Examples
use dcbor::prelude::*;
// Create a store that implements TagsStoreTrait
let mut tags = TagsStore::default();
// Register a tag with a human-readable name
tags.insert(Tag::new(1, "date".to_string()));
// Look up tag by number
let tag_name = tags.name_for_value(1);
assert_eq!(tag_name, "date");
// Look up tag by name
let tag = tags.tag_for_name("date").unwrap();
assert_eq!(tag.value(), 1);The trait also includes a helper method to handle the common case of optional tag stores.