19个版本 (5个稳定版)
1.1.3 | 2022年6月4日 |
---|---|
1.1.1 | 2019年5月4日 |
1.0.1 | 2018年5月13日 |
0.8.2 | 2018年4月24日 |
0.6.0 | 2017年10月6日 |
#202 in 游戏开发
每月下载量7,606
在118个库中使用(11个直接使用)
43KB
954 行
shrev
一个基于拉取的事件通道,事件存储在环形缓冲区中,旨在作为资源在specs
中使用。
示例用法
extern crate shrev;
use shrev::EventChannel;
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct TestEvent {
data: u32,
}
fn main() {
let mut channel = EventChannel::new();
channel.drain_vec_write(&mut vec![TestEvent { data: 1 }, TestEvent { data: 2 }]);
let mut reader_id = channel.register_reader();
// Should be empty, because reader was created after the write
assert_eq!(
Vec::<TestEvent>::default(),
channel.read(&mut reader_id).cloned().collect::<Vec<_>>()
);
// Should have data, as a second write was done
channel.single_write(TestEvent { data: 5 });
assert_eq!(
vec![TestEvent { data: 5 }],
channel.read(&mut reader_id).cloned().collect::<Vec<_>>()
);
// We can also just send in an iterator.
channel.iter_write(
[TestEvent { data: 8 }, TestEvent { data: 9 }]
.iter()
.cloned(),
);
assert_eq!(
vec![TestEvent { data: 8 }, TestEvent { data: 9 }],
channel.read(&mut reader_id).cloned().collect::<Vec<_>>()
);
}
许可证
shrev-rs
是免费且开源软件,根据MIT许可证和Apache许可证2.0条款分发。
除非你明确表示,否则任何有意提交到作品中的贡献,根据Apache-2.0许可证定义,将作为上述许可证双重许可,不附加任何额外条款或条件。