1 // Checks for issue #26235
7 const NUM_THREADS
: usize = 2;
17 impl<S
> Stats
<S
> where S
: Copy
{
18 fn dot
<B
, F
, T
>(self, s
: Stats
<T
>, f
: F
) -> Stats
<B
> where F
: Fn(S
, T
) -> B
{
19 let Stats { upsert: u1, delete: d1, insert: i1, update: p1 }
= self;
20 let Stats { upsert: u2, delete: d2, insert: i2, update: p2 }
= s
;
21 Stats { upsert: f(u1, u2), delete: f(d1, d2), insert: f(i1, i2), update: f(p1, p2) }
24 fn new(init
: S
) -> Self {
25 Stats { upsert: init, delete: init, insert: init, update: init }
29 fn make_threads() -> Vec
<thread
::JoinHandle
<()>> {
30 let mut t
= Vec
::with_capacity(NUM_THREADS
);
31 for _
in 0..NUM_THREADS
{
32 t
.push(thread
::spawn(move || {}
));
37 let stats
= [Stats
::new(0); NUM_THREADS
];
41 let Stats { ref upsert, ref delete, ref insert, ref update }
= stats
.iter().fold(
42 Stats
::new(0), |res
, &s
| res
.dot(s
, |x
: Key
, y
: Key
| x
.wrapping_add(y
)));
43 println
!("upserts: {}, deletes: {}, inserts: {}, updates: {}",
44 upsert
, delete
, insert
, update
);