// check-pass use std::borrow::Cow; #[derive(Clone, Debug)] struct S<'a> { name: Cow<'a, str> } #[derive(Clone, Debug)] struct T<'a> { s: Cow<'a, [S<'a>]> } fn main() { let s1 = [S { name: Cow::Borrowed("Test1") }, S { name: Cow::Borrowed("Test2") }]; let b1 = T { s: Cow::Borrowed(&s1) }; let s2 = [S { name: Cow::Borrowed("Test3") }, S { name: Cow::Borrowed("Test4") }]; let b2 = T { s: Cow::Borrowed(&s2) }; let mut v = Vec::new(); v.push(b1); v.push(b2); println!("{:?}", v); }