1pub trait Safety {
3 const IS_SAFE: bool;
5}
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9pub struct Safe;
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
12pub struct Unsafe;
13
14impl Safety for Safe {
15 const IS_SAFE: bool = true;
16}
17impl Safety for Unsafe {
18 const IS_SAFE: bool = false;
19}
20
21#[macro_export]
23macro_rules! safety {
24 (safe) => {
25 $crate::safety::Safe
26 };
27 (unsafe) => {
28 $crate::safety::Unsafe
29 };
30 (true) => {
31 $crate::safety::Safe
32 };
33 (false) => {
34 $crate::safety::Unsafe
35 };
36}