1 // SPDX-FileCopyrightText: 2020 Robin Krahl <[email protected]>
2 // SPDX-License-Identifier: CC0-1.0
3 
4 use merge::Merge;
5 
6 #[derive(Merge)]
7 struct User {
8     #[merge(skip)]
9     pub name: &'static str,
10     pub location: Option<&'static str>,
11     #[merge(strategy = merge::vec::append)]
12     pub groups: Vec<&'static str>,
13 }
14 
main()15 fn main() {
16     let defaults = User {
17         name: "",
18         location: Some("Internet"),
19         groups: vec!["rust"],
20     };
21     let mut ferris = User {
22         name: "Ferris",
23         location: None,
24         groups: vec!["mascot"],
25     };
26     ferris.merge(defaults);
27 
28     assert_eq!("Ferris", ferris.name);
29     assert_eq!(Some("Internet"), ferris.location);
30     assert_eq!(vec!["mascot", "rust"], ferris.groups);
31 }
32