use crate::Borrow;
#[derive(Debug, PartialEq, Eq)]
struct Data(String, usize, bool, Vec<Self>);
#[test]
fn test() {
let data = Data(String::from("Hello, World"), 100, false, vec![]);
let mut data_ref = Borrow::new(data);
let mut clone = Borrow::clone(&data_ref);
data_ref.0.push('!');
clone.1 += 55;
data_ref.2 = true;
clone.3.push(Data("".into(), 0, false, Vec::new()));
println!("{:?}", clone);
println!("{:?}", data_ref);
assert_eq!(
*data_ref,
Data(
String::from("Hello, World!"),
155,
true,
vec![Data("".into(), 0, false, vec![])]
)
);
assert_eq!(
*clone,
Data(
String::from("Hello, World!"),
155,
true,
vec![Data("".into(), 0, false, vec![])]
)
);
print(&data_ref);
}
fn print<T: std::fmt::Debug>(data: &T) {
println!("{:?}", data);
}