mirror of
https://github.com/openharmony/third_party_rust_tinyvec.git
synced 2026-07-18 12:25:35 -04:00
Fix ArrayishVec::drain implementation
The end bound was off by one
This commit is contained in:
+2
-2
@@ -200,8 +200,8 @@ impl<A: Arrayish> ArrayishVec<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!(
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#![allow(bad_style)]
|
||||
|
||||
use tinyvec::*;
|
||||
use std::iter::FromIterator;
|
||||
|
||||
#[test]
|
||||
fn test_a_vec() {
|
||||
@@ -121,3 +122,32 @@ fn ArrayishVec_remove() {
|
||||
assert_eq!(av.remove(1), 2);
|
||||
assert_eq!(&av[..], &[1, 3][..]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ArrayishVec_drain() {
|
||||
let mut av: ArrayishVec<[i32; 10]> = Default::default();
|
||||
av.push(1);
|
||||
av.push(2);
|
||||
av.push(3);
|
||||
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(..)), vec![1, 2, 3]);
|
||||
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(..2)), vec![1, 2]);
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(..3)), vec![1, 2, 3]);
|
||||
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(..=1)), vec![1, 2]);
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(..=2)), vec![1, 2, 3]);
|
||||
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(0..)), vec![1, 2, 3]);
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(1..)), vec![2, 3]);
|
||||
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(0..2)), vec![1, 2]);
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(0..3)), vec![1, 2, 3]);
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(1..2)), vec![2]);
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(1..3)), vec![2, 3]);
|
||||
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(0..=1)), vec![1, 2]);
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(0..=2)), vec![1, 2, 3]);
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(1..=1)), vec![2]);
|
||||
assert_eq!(Vec::from_iter(av.clone().drain(1..=2)), vec![2, 3]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user