mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
Auto merge of #36084 - apasel422:counter, r=bluss
Address FIXME in libcollectionstest/btree/set.rs
This commit is contained in:
commit
ef9786ce0e
@ -39,30 +39,8 @@ fn test_hash() {
|
|||||||
assert!(::hash(&x) == ::hash(&y));
|
assert!(::hash(&x) == ::hash(&y));
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Counter<'a, 'b> {
|
|
||||||
i: &'a mut usize,
|
|
||||||
expected: &'b [i32],
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a, 'b, 'c> FnMut<(&'c i32,)> for Counter<'a, 'b> {
|
|
||||||
extern "rust-call" fn call_mut(&mut self, (&x,): (&'c i32,)) -> bool {
|
|
||||||
assert_eq!(x, self.expected[*self.i]);
|
|
||||||
*self.i += 1;
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a, 'b, 'c> FnOnce<(&'c i32,)> for Counter<'a, 'b> {
|
|
||||||
type Output = bool;
|
|
||||||
|
|
||||||
extern "rust-call" fn call_once(mut self, args: (&'c i32,)) -> bool {
|
|
||||||
self.call_mut(args)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn check<F>(a: &[i32], b: &[i32], expected: &[i32], f: F) where
|
fn check<F>(a: &[i32], b: &[i32], expected: &[i32], f: F) where
|
||||||
// FIXME Replace Counter with `Box<FnMut(_) -> _>`
|
F: FnOnce(&BTreeSet<i32>, &BTreeSet<i32>, &mut FnMut(&i32) -> bool) -> bool,
|
||||||
F: FnOnce(&BTreeSet<i32>, &BTreeSet<i32>, Counter) -> bool,
|
|
||||||
{
|
{
|
||||||
let mut set_a = BTreeSet::new();
|
let mut set_a = BTreeSet::new();
|
||||||
let mut set_b = BTreeSet::new();
|
let mut set_b = BTreeSet::new();
|
||||||
@ -71,7 +49,11 @@ fn check<F>(a: &[i32], b: &[i32], expected: &[i32], f: F) where
|
|||||||
for y in b { assert!(set_b.insert(*y)) }
|
for y in b { assert!(set_b.insert(*y)) }
|
||||||
|
|
||||||
let mut i = 0;
|
let mut i = 0;
|
||||||
f(&set_a, &set_b, Counter { i: &mut i, expected: expected });
|
f(&set_a, &set_b, &mut |&x| {
|
||||||
|
assert_eq!(x, expected[i]);
|
||||||
|
i += 1;
|
||||||
|
true
|
||||||
|
});
|
||||||
assert_eq!(i, expected.len());
|
assert_eq!(i, expected.len());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
#![feature(collections)]
|
#![feature(collections)]
|
||||||
#![feature(collections_bound)]
|
#![feature(collections_bound)]
|
||||||
#![feature(const_fn)]
|
#![feature(const_fn)]
|
||||||
#![feature(fn_traits)]
|
|
||||||
#![feature(enumset)]
|
#![feature(enumset)]
|
||||||
#![feature(pattern)]
|
#![feature(pattern)]
|
||||||
#![feature(rand)]
|
#![feature(rand)]
|
||||||
|
Loading…
Reference in New Issue
Block a user