changeset 0.1.0

A small library to generate changeset
Documentation

changeset

Library to generate a changeset.

Usage

Add dependency to Cargo.toml:

[dependencies]
changeset = "0.1"

And in your main.rs or lib.rs:

#[macro_use]
extern crate changeset;

Exemple

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 {
    #[allow(missing_docs)]
    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
    }

    #[allow(missing_docs)]
    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);
        }
    }
}

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

License: MIT