Fix calling inherent instead of trait methods

This commit is contained in:
SoniEx2 2018-10-24 22:06:26 -03:00
parent bfb4b4b2d7
commit 0fc0b42f31
3 changed files with 35 additions and 3 deletions

View File

@ -1,6 +1,6 @@
[package] [package]
name = "eventbus" name = "eventbus"
version = "0.3.1" version = "0.3.2"
authors = ["SoniEx2 <endermoneymod@gmail.com>"] authors = ["SoniEx2 <endermoneymod@gmail.com>"]
description = "Safe, fast and concurrent event system, inspired by the MinecraftForge event bus." description = "Safe, fast and concurrent event system, inspired by the MinecraftForge event bus."
keywords = ["event", "safe", "fast", "concurrent", "bus"] keywords = ["event", "safe", "fast", "concurrent", "bus"]
@ -10,3 +10,10 @@ repository = "https://cybre.tech/SoniEx2/rust.eventbus"
[dependencies] [dependencies]
lazy_static = "1.1.0" lazy_static = "1.1.0"
anymap = "0.12.1" anymap = "0.12.1"
[dev-dependencies]
criterion = "0.2.5"
[[bench]]
name = "post_single_benchmark"
harness = false

View File

@ -0,0 +1,25 @@
#[macro_use]
extern crate criterion;
#[macro_use]
extern crate eventbus;
use criterion::Criterion;
use eventbus::{Event, EventBus};
struct MyEvent {
}
impl Event for MyEvent {
}
fn my_hook(_event: &mut MyEvent) {
}
fn criterion_benchmark(c: &mut Criterion) {
let bus = EventBus::new();
register_hook!(&bus, 0, MyEvent, my_hook);
c.bench_function("one_hook", move |b| b.iter(|| post_event!(&bus, MyEvent, &mut MyEvent {})));
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);

View File

@ -55,11 +55,11 @@ macro_rules! post_event {
let handlers = $crate::get_post_targets::<$t>($b, event, id); let handlers = $crate::get_post_targets::<$t>($b, event, id);
for (_pri, fun) in handlers.iter() { for (_pri, fun) in handlers.iter() {
fun(event); fun(event);
if <$t>::cancellable() && event.cancelled() { if <$t as $crate::Event>::cancellable() && <$t as $crate::Event>::cancelled(event) {
break; break;
} }
} }
<$t>::cancellable() && event.cancelled() <$t as $crate::Event>::cancellable() && <$t as $crate::Event>::cancelled(event)
} }
} }
} }