]> git.proxmox.com Git - rustc.git/blob - vendor/merge/examples/user.rs
New upstream version 1.48.0~beta.8+dfsg1
[rustc.git] / vendor / merge / examples / user.rs
1 // SPDX-FileCopyrightText: 2020 Robin Krahl <robin.krahl@ireas.org>
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
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 }