#visit #perform #elements #generic #action #structure

visitor

一个泛型库,用于轻松访问结构中的元素并对每个元素执行操作

4 个版本

使用旧的 Rust 2015

0.2.1 2016年4月13日
0.2.0 2016年4月13日
0.1.1 2016年4月12日
0.1.0 2016年4月12日

#visit 中排名 5

MIT/Apache

3KB

Visitor

一个泛型库,用于轻松访问结构中的元素并对每个元素执行操作

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
visitor = "*"

并将其添加到您的 crate 根目录

extern crate visitor;

示例

struct Data{
	a: u32,
	b: u32
}
impl Visit<u32> for Data{
	fn visit<V: Visitor<u32>>(&self, v: &mut V) -> Result<(),V::Error>{
		try!(v.visit(self.a));
		try!(v.visit(self.b));
		Ok(())
	}
}

struct AddVisitor{
	value: u32
}
impl Visitor<u32> for AddVisitor{
	type Error = ();
	fn visit(&mut self, data: u32) -> Result<(), Self::Error>{
		self.value += data;
		Ok(())
	}
}

#[test]
fn it_works() {
	let data = Data{
		a: 3,
		b: 4
	};
	let mut adder = AddVisitor{
		value: 0
	};
	
	data.visit(&mut adder).unwrap();
	
	assert_eq!(adder.value, 7);
}

无运行时依赖