sel4_abstract_rc/
lib.rs

1//
2// Copyright 2024, Colias Group, LLC
3//
4// SPDX-License-Identifier: BSD-2-Clause
5//
6
7#![no_std]
8
9extern crate alloc;
10
11use alloc::rc::Rc;
12use alloc::sync::Arc;
13use core::ops::Deref;
14
15pub trait AbstractRcT {
16    type Rc<T>: AbstractRc<T>;
17}
18
19pub struct RcT(());
20
21impl AbstractRcT for RcT {
22    type Rc<T> = Rc<T>;
23}
24
25pub struct ArcT(());
26
27impl AbstractRcT for ArcT {
28    type Rc<T> = Arc<T>;
29}
30
31pub trait AbstractRc<T>: Deref<Target = T> + From<T> + Clone {}
32
33impl<T> AbstractRc<T> for Rc<T> {}
34
35impl<T> AbstractRc<T> for Arc<T> {}