[self]: https://gitlab.com/konnorandrews/deep-struct-update
[`update`]: https://docs.rs/deep-struct-update/0.1.0/deep_struct_update/macro.update.html
[![Version](https://img.shields.io/static/v1?label=version&message=0.1.0&color=informational)]()
[![Crates.io](https://img.shields.io/crates/v/deep-struct-update)](https://crates.io/crates/deep-struct-update)
[![docs.rs](https://img.shields.io/docsrs/deep-struct-update)](https://docs.rs/deep-struct-update/0.1.0/deep_struct_update/)
[![Crates.io](https://img.shields.io/crates/l/deep-struct-update)](#license)
# `::deep-struct-update`
[Struct update syntax](https://doc.rust-lang.org/book/ch05-01-defining-structs.html#creating-instances-from-other-instances-with-struct-update-syntax) with support for nested structs.
```rust
use deep_struct_update::update;
struct Person {
name: String,
job: Job,
age: u8
}
struct Job {
position: String,
company: String
}
let bob = Person {
name: String::from("Bob"),
job: Job {
position: String::from("Programmer"),
company: String::from("Evil Inc.")
},
age: 29
};
let alice = update! {
name: String::from("Alice"),
age: 31,
job: {
position: String::from("Senior Programmer")
}
..bob
};
assert_eq!(alice.age, 31);
assert_eq!(alice.name, "Alice");
assert_eq!(alice.job.position, "Senior Programmer");
assert_eq!(alice.job.company, "Evil Inc.");
```
#### License
Licensed under either of Apache License, Version
2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in deep-struct-update by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.