#struct #string #derive

set_field_macro

set_field的派生宏

2个版本

0.1.1 2023年9月9日
0.1.0 2023年9月9日

#503 in #struct


set_field中使用

MIT许可

5KB
69

set_field的派生宏

查看set_field

示例

use set_field::SetField;

#[derive(SetField)]
struct Foo {
	a: i32,
	b: Option<bool>,
	c: i32,
}
fn test() {
	let mut t = Foo { a: 777, b: None, c: 0 };
	// return true on success:
	assert_eq!(t.set_field("a", 888), true);
	// return true on success:
	assert_eq!(t.set_field("b", Some(true)), true);
	assert_eq!(t.a, 888);
	assert_eq!(t.b, Some(true));
	// return false on nonexistent field:
	assert_eq!(t.set_field("d", 0), false);
	// return false on wrong type:
	assert_eq!(t.set_field("b", 0), false);
	// won't compile:
	// assert_eq!(t.set_field("a", 0.0), false);
}

lib.rs:

set_field的派生宏

依赖项

~295–750KB
~18K SLoC