Implement #[define_opaque] attribute for functions.
This commit is contained in:
@@ -24,6 +24,7 @@ pub trait EraseType: Copy {
|
||||
pub type Erase<T: EraseType> = Erased<impl Copy>;
|
||||
|
||||
#[inline(always)]
|
||||
#[cfg_attr(not(bootstrap), define_opaque(Erase))]
|
||||
pub fn erase<T: EraseType>(src: T) -> Erase<T> {
|
||||
// Ensure the sizes match
|
||||
const {
|
||||
@@ -47,6 +48,7 @@ pub fn erase<T: EraseType>(src: T) -> Erase<T> {
|
||||
|
||||
/// Restores an erased value.
|
||||
#[inline(always)]
|
||||
#[cfg_attr(not(bootstrap), define_opaque(Erase))]
|
||||
pub fn restore<T: EraseType>(value: Erase<T>) -> T {
|
||||
let value: Erased<<T as EraseType>::Result> = value;
|
||||
// See comment in `erase` for why we use `transmute_unchecked`.
|
||||
|
||||
Reference in New Issue
Block a user