TagsStoreTrait

Trait TagsStoreTrait 

Source
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.

Required Methods§

Source

fn assigned_name_for_tag(&self, tag: &Tag) -> Option<String>

Source

fn name_for_tag(&self, tag: &Tag) -> String

Source

fn tag_for_value(&self, value: TagValue) -> Option<Tag>

Source

fn tag_for_name(&self, name: &str) -> Option<Tag>

Source

fn name_for_value(&self, value: TagValue) -> String

Source

fn summarizer(&self, tag: TagValue) -> Option<&CBORSummarizer>

Provided Methods§

Source

fn name_for_tag_opt<T>(tag: &Tag, tags: Option<&T>) -> String
where T: TagsStoreTrait, Self: Sized,

Implementors§