#proc-macro #macro-derive #if-empty #is-empty

if_empty_derive

为实现了is_empty函数的类型生成if_empty的进程宏

1个不稳定版本

0.1.0 2021年7月30日

#917#macro-derive


用于 if_empty

MPL-2.0 许可证

7KB

IfEmpty derive宏

如果类型实现了is_empty函数,此crate提供了一个derive宏,实现if_empty功能。

#[derive(IfEmpty)]
struct Example {
    value: String,
}

impl Example {
    fn is_empty(&self) -> bool {
        self.value.is_empty()
    }
}

fn main() {
    let example = Example {
        value: String::new(),
    };
    print!("Example '{}'", example.value);
    // Example ''

    let not_empty_example = e.if_empty(Example {
        value: "default val".to_string(),
    });

    print!("Example '{}'", not_empty_example.value);
    // Example 'default val'
}

lib.rs:

补充if_empty的derive宏

如果类型实现了is_empty函数,此crate提供了一个derive宏,实现if_empty函数。

示例

#[derive(IfEmpty)]
struct Example {
    value: String,
}

impl Example {
    fn is_empty(&self) -> bool {
        self.value.is_empty()
    }
}

let example = Example {
    value: String::new(),
};

assert!(example.value.is_empty());
assert_eq!(example.if_empty(Example {value: "a default".to_string()}).value, "a default");

依赖项

~1.5MB
~35K SLoC