facet_core/impls/
builtin.rs

1use crate::{Opaque, Shape, Variance};
2
3use crate::Facet;
4
5// Opaque<T> is a lifetime boundary; require 'static to prevent lifetime laundering
6// through reflection. See issue #1563 for details.
7unsafe impl<'facet, T: 'static> Facet<'facet> for Opaque<T> {
8    const SHAPE: &'static Shape = &const {
9        Shape::builder_for_sized::<Opaque<T>>("Opaque")
10            .variance(Variance::INVARIANT)
11            .build()
12    };
13}