mirror of
https://github.com/openharmony/third_party_rust_tinyvec.git
synced 2026-07-18 12:25:35 -04:00
Fix TinyVec::drain implementation
This commit is contained in:
@@ -32,3 +32,7 @@ all-features = true
|
||||
|
||||
[workspace]
|
||||
members = ["fuzz"]
|
||||
|
||||
[[test]]
|
||||
name = "tinyvec"
|
||||
required-features = ["extern_crate_alloc"]
|
||||
|
||||
+2
-2
@@ -215,8 +215,8 @@ impl<A: Arrayish> TinyVec<A> {
|
||||
Bound::Unbounded => 0,
|
||||
};
|
||||
let end = match range.end_bound() {
|
||||
Bound::Included(x) => *x,
|
||||
Bound::Excluded(x) => x - 1,
|
||||
Bound::Included(x) => x + 1,
|
||||
Bound::Excluded(x) => *x,
|
||||
Bound::Unbounded => self.len(),
|
||||
};
|
||||
assert!(
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
#![allow(bad_style)]
|
||||
|
||||
use tinyvec::*;
|
||||
use std::iter::FromIterator;
|
||||
|
||||
#[test]
|
||||
fn TinyVec_drain() {
|
||||
let mut tv: TinyVec<[i32; 10]> = Default::default();
|
||||
tv.push(1);
|
||||
tv.push(2);
|
||||
tv.push(3);
|
||||
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(..)), vec![1, 2, 3]);
|
||||
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(..2)), vec![1, 2]);
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(..3)), vec![1, 2, 3]);
|
||||
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(..=1)), vec![1, 2]);
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(..=2)), vec![1, 2, 3]);
|
||||
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(0..)), vec![1, 2, 3]);
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(1..)), vec![2, 3]);
|
||||
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(0..2)), vec![1, 2]);
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(0..3)), vec![1, 2, 3]);
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(1..2)), vec![2]);
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(1..3)), vec![2, 3]);
|
||||
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(0..=1)), vec![1, 2]);
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(0..=2)), vec![1, 2, 3]);
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(1..=1)), vec![2]);
|
||||
assert_eq!(Vec::from_iter(tv.clone().drain(1..=2)), vec![2, 3]);
|
||||
}
|
||||
Reference in New Issue
Block a user