struct_scalpel/impls/std/
sync.rs1use std::{sync::{OnceLock, Once, Arc, atomic}, cell::UnsafeCell, mem::MaybeUninit, marker::PhantomData, ptr::NonNull};
2
3use crate::{Dissectible, impl_mirror_mock};
4
5
6#[derive(Dissectible)]
7struct MockOnceLock<T> {
8 once: Once,
9 value: UnsafeCell<MaybeUninit<T>>,
10 _marker: PhantomData<T>,
11}
12impl_mirror_mock!(with <T>: MockOnceLock<T> => OnceLock<T>);
13
14#[repr(C)]
15struct ArcInner<T> where T: ?Sized {
17 strong: atomic::AtomicUsize,
18 weak: atomic::AtomicUsize,
19 data: T,
20}
21
22#[derive(Dissectible)]
23pub struct MockArc<T> {
24 ptr: NonNull<ArcInner<T>>,
25 phantom: PhantomData<ArcInner<T>>,
26}
27impl_mirror_mock!(with <T>: MockArc<T> => Arc<T>);
28
29pub mod dummy {
30 use std::sync::atomic;
31
32 use struct_scalpel_proc_macro::Dissectible;
33
34 #[derive(Dissectible)]
35 #[repr(C)]
36 pub struct ArcInner<T> {
38 strong: atomic::AtomicUsize,
39 weak: atomic::AtomicUsize,
40 data: T,
41 }
42}