• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

facet-rs / facet / 14933303211

09 May 2025 04:23PM UTC coverage: 55.263% (-3.5%) from 58.76%
14933303211

push

github

fasterthanlime
Uncomment facet-bench

6657 of 12046 relevant lines covered (55.26%)

73.56 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

7.69
/facet-core/src/impls_core/smartptr.rs
1
use crate::{
2
    Def, Facet, Field, FieldFlags, KnownSmartPointer, PtrConst, Repr, SmartPointerDef,
3
    SmartPointerFlags, SmartPointerVTable, StructKind, StructType, Type, UserType, ValueVTable,
4
    value_vtable,
5
};
6

7
unsafe impl<'a, T: Facet<'a>> Facet<'a> for core::ptr::NonNull<T> {
8
    const VTABLE: &'static ValueVTable =
9
        &const { value_vtable!(core::ptr::NonNull<T>, |f, _opts| write!(f, "NonNull")) };
×
10

11
    const SHAPE: &'static crate::Shape = &const {
12
        crate::Shape::builder_for_sized::<Self>()
13
            .type_params(&[crate::TypeParam {
14
                name: "T",
15
                shape: || T::SHAPE,
1✔
16
            }])
17
            .ty(Type::User(UserType::Struct(StructType {
18
                repr: Repr::transparent(),
19
                kind: StructKind::Struct,
20
                fields: &const {
21
                    [Field::builder()
22
                        .name("pointer")
23
                        .shape(<*mut T>::SHAPE)
24
                        .offset(0)
25
                        .flags(FieldFlags::EMPTY)
26
                        .build()]
27
                },
28
            })))
29
            .def(Def::SmartPointer(
30
                SmartPointerDef::builder()
31
                    .pointee(|| T::SHAPE)
×
32
                    .flags(SmartPointerFlags::EMPTY)
33
                    .known(KnownSmartPointer::NonNull)
34
                    .vtable(
35
                        &const {
36
                            SmartPointerVTable::builder()
37
                                .borrow_fn(|this| {
×
38
                                    let ptr = unsafe { this.get::<Self>().as_ptr() };
×
39
                                    PtrConst::new(ptr)
×
40
                                })
×
41
                                .new_into_fn(|this, ptr| {
×
42
                                    let ptr = unsafe { ptr.read::<*mut T>() };
×
43
                                    let non_null =
×
44
                                        unsafe { core::ptr::NonNull::new_unchecked(ptr) };
×
45
                                    unsafe { this.put(non_null) }
×
46
                                })
×
47
                                .build()
48
                        },
49
                    )
50
                    .build(),
51
            ))
52
            .build()
53
    };
54
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc