ResizePaddedNumber

Trait ResizePaddedNumber 

Source
pub trait ResizePaddedNumber<const A_1: u8, const B_1: u8>: SealedResize {
    // Required method
    fn resize(&self) -> PaddedNumber<A_1, B_1>;
}
Expand description

Resize a PaddedNumber into a larger one or one of the same size.

Type system ensures that the new minimum length <= previous minimum length, and that the new maximum length >= previous maximum length.

#![feature(generic_const_exprs)]

let a = bound_padded_number!(2, 3, "123").resize();
let b = bound_padded_number!(1, 5, "123");
assert_eq!(a, b)

It being marked at trait makes it possible to define functions which allow the passing of any padded number which fits into the desired size.

let a = bound_padded_number!(2, 3, "12");
foo_dyn(&a);
foo_impl(a);

let b = bound_padded_number!(3, 3, "123");
foo_dyn(&b);
foo_impl(b);

fn foo_dyn(padded_number: &dyn ResizePaddedNumber<2, 3>) {
    let _padded_number = padded_number.resize();
}

fn foo_impl(padded_number: impl ResizePaddedNumber<2, 3>) {
    let _padded_number = padded_number.resize();
}

Required Methods§

Source

fn resize(&self) -> PaddedNumber<A_1, B_1>

Resize a padded number

Check out the trait-level documentation for more

Implementors§

Source§

impl<const A_0: u8, const B_0: u8, const A_1: u8, const B_1: u8> ResizePaddedNumber<A_1, B_1> for PaddedNumber<A_0, B_0>
where [(); { _ }]:,