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}