Skip to main content

FnCodex

Struct FnCodex 

Source
pub struct FnCodex<F> { /* private fields */ }
Expand description

Wrap a user-provided closure as a Codex.

The closure is presumed to be an involution; nothing in the type system enforces this and violating the property will corrupt every stored key. Test your closure with the property test in the codex integration suite before using it in production.

§Examples

use key_vault::codex::{Codex, FnCodex};

// XOR with a fixed mask is an involution.
let codex = FnCodex::new(|b: u8| b ^ 0x5a);
assert_eq!(codex.decode(codex.encode(0x42)), 0x42);

Implementations§

Source§

impl<F> FnCodex<F>
where F: Fn(u8) -> u8 + Send + Sync,

Source

pub fn new(f: F) -> Self

Wrap the given involution.

Trait Implementations§

Source§

impl<F> Codex for FnCodex<F>
where F: Fn(u8) -> u8 + Send + Sync,

Source§

fn encode(&self, byte: u8) -> u8

Transform a byte on the way into storage.
Source§

fn decode(&self, byte: u8) -> u8

Transform a byte on the way out of storage. Read more

Auto Trait Implementations§

§

impl<F> Freeze for FnCodex<F>
where F: Freeze,

§

impl<F> RefUnwindSafe for FnCodex<F>
where F: RefUnwindSafe,

§

impl<F> Send for FnCodex<F>
where F: Send,

§

impl<F> Sync for FnCodex<F>
where F: Sync,

§

impl<F> Unpin for FnCodex<F>
where F: Unpin,

§

impl<F> UnsafeUnpin for FnCodex<F>
where F: UnsafeUnpin,

§

impl<F> UnwindSafe for FnCodex<F>
where F: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more