#[test]
fn tuple_struct_1() {
#[attrimpl::attrimpl]
struct TupleStruct(#[attrimpl(from, into, deref_mut)] String);
let mut value = TupleStruct::from("test".to_string());
assert_eq!(value.0, "test");
value.push_str("ing");
assert_eq!(*value, "testing");
let s: String = value.into();
assert_eq!(s, "testing");
}
#[test]
fn tuple_struct_access() {
#[attrimpl::attrimpl]
struct TupleStruct(
#[attrimpl(
get_ref(name = "a"),
get_clone(name = "b"),
access(name = "c"),
access(name = "d", get_ref),
access(name = "e", get_clone)
)]
String,
#[attrimpl(
get_ref(name = "f"),
get_clone(name = "g"),
get_copy(name = "h"),
access(name = "i"),
access(name = "j", get_ref),
access(name = "k", get_clone),
access(name = "l", get_copy)
)]
usize,
);
let mut value = TupleStruct("test".to_string(), 42);
let _r: &String = value.a();
let _r: String = value.b();
let _r: &String = value.c();
let _r: &mut String = value.c_mut();
let _r: &String = value.d();
let _r: &mut String = value.d_mut();
let _r: String = value.e();
let _r: &mut String = value.e_mut();
let _r: &usize = value.f();
let _r: usize = value.g();
let _r: usize = value.h();
let _r: &usize = value.i();
let _r: &mut usize = value.i_mut();
let _r: &usize = value.j();
let _r: &mut usize = value.j_mut();
let _r: usize = value.k();
let _r: &mut usize = value.k_mut();
let _r: usize = value.l();
let _r: &mut usize = value.l_mut();
}