Function constmuck::wrapper::peel[][src]

pub const fn peel<Outer, Inner>(
    val: Outer,
    _bound: IsTransparentWrapper<Outer, Inner>
) -> Inner
Expand description

Casts Outer to Inner

Requires that Outer implements TransparentWrapper<Inner>

Example

use constmuck::{IsTW, wrapper};

use std::num::Wrapping;

// `IsTW!()` is a more concise way to write `IsTransparentWrapper::NEW`
const VALUE: u32 = wrapper::peel(Wrapping(3), IsTW!());
assert_eq!(VALUE, 3);

// Casting `[Wrapping<u32>; 3]` to `[u32; 3]`
//
// The `.array()` is required to cast arrays of wrappers into
// arrays of the values inside those wrappers.
const ARR: [u32; 3] = wrapper::peel(
    [Wrapping(5), Wrapping(8), Wrapping(13)],
    IsTW!(Wrapping<u32>, u32).array(),
);
assert_eq!(ARR, [5, 8, 13]);