Crate changeset [] [src]

Library to generate a changeset.

Usage

Add dependency to Cargo.toml:

[dependencies]
changeset = "0.1"

And in your main.rs or lib.rs:

This example is not tested
#[macro_use]
extern crate changeset;

Exemple

This example is not tested
changeset!(UserChangeSet {
    /// User's name
    name: String,
    age: usize
});

This will generate:

struct UserChangeSet {
    /// User's name
    pub name: Option<String>,
    pub age: Option<usize>,
}

impl UserChangeSet {
    /// Some doc here
    pub fn new() -> UserChangeSet {
        UserChangeSet {
            name: None,
            age: None,
        }
    }

    /// User's name
    pub fn name(mut self, name: String) -> UserChangeSet {
        self.name = Some(name);
        self
    }

    pub fn age(mut self, age: usize) -> UserChangeSet {
        self.age = Some(age);
        self
    }

    /// Some doc here
    pub fn merge(&mut self, rhs: UserChangeSet) {
        if let Some(name) = rhs.name {
            self.name = Some(name);
        }
        if let Some(age) = rhs.age {
            self.age = Some(age);
        }
    }

    // I may add some new functions later
}

You can also generate public struct just by adding pub keyword.

Macros

changeset