Trait StructMergeRef

Source
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§

Source

fn merge_ref(&mut self, src: &Src)

Merge the given struct into Self.

Source

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§

Source§

impl<Target, Src: StructMergeIntoRef<Target>> StructMergeRef<Src> for Target

Implement the StructMergeRef trait for all types that provide StructMergeInto for it.