build(rust): vendor rnix parser crate
This commit was merged in pull request #57.
This commit is contained in:
1 parent
cbdf482422
commit
82ad65a3a4
492 files changed
+67785
-1
No files matched your search
@@ -0,0 +1,69 @@
|
||||
use std::thread;
|
||||
|
||||
use countme::{get, Count};
|
||||
|
||||
#[derive(Default)]
|
||||
struct Foo {
|
||||
_c: Count<Self>,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
struct Bar {
|
||||
_c: Count<Self>,
|
||||
_x: i32,
|
||||
}
|
||||
|
||||
mod deeply {
|
||||
pub(crate) mod nested {
|
||||
pub(crate) mod module {
|
||||
use countme::Count;
|
||||
|
||||
#[derive(Default)]
|
||||
pub(crate) struct Quux {
|
||||
_c: Count<Self>,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
countme::enable(true);
|
||||
let t = std::time::Instant::now();
|
||||
let n = 5;
|
||||
let m = 1_000_000;
|
||||
|
||||
let mut threads = Vec::new();
|
||||
for _ in 0..n {
|
||||
threads.push(thread::spawn(move || {
|
||||
for _ in 0..m {
|
||||
Foo::default();
|
||||
}
|
||||
}));
|
||||
threads.push(thread::spawn(move || {
|
||||
let mut xs = Vec::with_capacity(m);
|
||||
for _ in 0..m {
|
||||
xs.push(Bar::default())
|
||||
}
|
||||
}));
|
||||
threads.push(thread::spawn(move || {
|
||||
for _ in 0..m {
|
||||
deeply::nested::module::Quux::default();
|
||||
}
|
||||
}));
|
||||
}
|
||||
for t in threads {
|
||||
t.join().unwrap();
|
||||
}
|
||||
|
||||
let foo = get::<Foo>();
|
||||
assert_eq!(foo.total, m * n);
|
||||
assert!(foo.max_live >= 1);
|
||||
assert_eq!(foo.live, 0);
|
||||
|
||||
let bar = get::<Bar>();
|
||||
assert_eq!(bar.total, m * n);
|
||||
assert!(bar.max_live >= m);
|
||||
assert_eq!(bar.live, 0);
|
||||
|
||||
println!("{:?}", t.elapsed());
|
||||
}
|
||||
Reference in new issue
Block a user