pub trait StructMergeRef<Src> {
// Required methods
fn merge_ref(&mut self, src: &Src);
fn merge_ref_soft(&mut self, src: &Src);
}
Expand description
Merge another borrowed struct into Self
.
All fields to be merged on the borrowed struct have to implement Clone.
Required Methods§
Sourcefn merge_ref_soft(&mut self, src: &Src)
fn merge_ref_soft(&mut self, src: &Src)
Merge the given struct into Self
.
Nearly the same as merge_ref
, but any Self::Option<T>
fields will only get merged if the
value of the field is None
.
For example:
ⓘ
struct Target { a: Option<String> };
struct Src { a: String };
let target = Target { a: Some("test".to_string()) };
let src = Src { a: "test2".to_string() };
target.merge_ref_soft(&src);
// Value didn't get merged as `target.a` was `Some`
assert_eq!(target.a, "test".to_string());
Implementors§
impl<Target, Src: StructMergeIntoRef<Target>> StructMergeRef<Src> for Target
Implement the StructMergeRef trait for all types that provide StructMergeInto for it.