1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
use std::borrow::Cow;
use asn1_rs::*;
#[derive(ToStatic)]
pub struct Unit;
#[test]
fn derive_unit_tostatic() {
let unit = Unit;
let _static = unit.to_static();
assert_static_lifetime(&unit);
}
#[derive(ToStatic)]
//#[debug_derive]
pub struct Unnamed<'a>(pub Cow<'a, str>);
#[test]
fn derive_unnamed_tostatic() {
let s = Cow::Borrowed("test");
let unnamed = Unnamed(s);
let _static = unnamed.to_static();
assert!(matches! { _static.0, Cow::Owned(_) });
}
#[derive(ToStatic)]
//#[debug_derive]
pub struct Named<'a> {
cow: Cow<'a, str>,
}
#[derive(ToStatic)]
//#[debug_derive]
pub struct Embed<'a> {
a: Cow<'a, str>,
n: Named<'a>,
}
#[test]
fn derive_named_tostatic() {
let s = Cow::Borrowed("test");
let named1 = Named { cow: s };
let _static1 = named1.to_static();
assert_static_lifetime(&_static1);
assert!(matches! { _static1.cow, Cow::Owned(_) });
let s2 = Cow::Borrowed("test2");
let named2 = Embed { a: s2, n: named1 };
let _static2 = named2.to_static();
assert_static_lifetime(&_static2);
assert!(matches! { _static2.a, Cow::Owned(_) });
assert!(matches! { _static2.n.cow, Cow::Owned(_) });
}
#[derive(ToStatic)]
//#[debug_derive]
pub enum MyEnum0 {
Variant0,
Variant1(u32),
Variant2 { a: u32, b: u32 },
}
fn assert_static_lifetime<T>(_arg: &T)
where
T: 'static,
{
}
|