KeyPartsSequence

Trait KeyPartsSequence 

Source
pub trait KeyPartsSequence: Clone {
    // Required methods
    fn new() -> Self;
    fn extend<B: AsRef<[u8]>>(
        self,
        key_part_name: &'static str,
        bytes: B,
    ) -> Self;
    fn create_key<T: AsRef<[u8]>>(&self, key: T) -> Key<'_, Self>;
}

Required Methods§

Source

fn new() -> Self

Source

fn extend<B: AsRef<[u8]>>(self, key_part_name: &'static str, bytes: B) -> Self

Extends key sequence with a new part

§Example
use the_key::*;
define_key_part!(Part1, &[10, 20]);
define_key_part!(Part2, &[30, 40]);
define_key_seq!(MyKeySeq, [Part1, Part2]);

fn main() {
  let key_seq = MyKeySeq::new().extend("Part3", &[50, 60]);

  assert_eq!(
    key_seq.to_vec(),
    vec![10, 20, 30, 40, 50, 60]
  )
}
Source

fn create_key<T: AsRef<[u8]>>(&self, key: T) -> Key<'_, Self>

Creates new the_key::Key object

§Example
use the_key::*;
define_key_part!(Part1, &[10, 20]);
define_key_part!(Part2, &[30, 40]);
define_key_seq!(MyKeySeq, [Part1, Part2]);

fn main() {
  let key_seq = MyKeySeq::new();
  let key = key_seq.create_key(&[50, 60]);

  assert_eq!(
    key.to_vec(),
    vec![10, 20, 30, 40, 50, 60],
  );
}

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§