facet_core/impls/internal/
vtable.rs

1//! Facet implementation for VTableErased
2
3use crate::{
4    Def, Facet, Shape, ShapeBuilder, Type, UserType, VTableDirect, VTableErased, vtable_direct,
5};
6
7unsafe impl Facet<'_> for VTableErased {
8    const SHAPE: &'static Shape = &const {
9        const VTABLE: VTableDirect = vtable_direct!(VTableErased =>
10            Debug,
11        );
12
13        // VTableErased is an enum but we treat it as opaque
14        // since its variants contain function pointers
15        ShapeBuilder::for_sized::<VTableErased>("VTableErased")
16            .ty(Type::User(UserType::Opaque))
17            .def(Def::Scalar)
18            .vtable_direct(&VTABLE)
19            .copy()
20            .send()
21            .sync()
22            .build()
23    };
24}