mirror of
https://github.com/rust-embedded/heapless.git
synced 2025-09-30 05:50:29 +00:00
Merge pull request #229 from japaric/symmetric_vec_interface
Made pop_unchecked public, added is_empty
This commit is contained in:
commit
c82478f78b
34
src/vec.rs
34
src/vec.rs
@ -236,8 +236,8 @@ impl<T, const N: usize> Vec<T, N> {
|
||||
/// # Safety
|
||||
///
|
||||
/// This assumes the vec to have at least one element.
|
||||
pub(crate) unsafe fn pop_unchecked(&mut self) -> T {
|
||||
debug_assert!(!self.as_slice().is_empty());
|
||||
pub unsafe fn pop_unchecked(&mut self) -> T {
|
||||
debug_assert!(!self.is_empty());
|
||||
|
||||
self.len -= 1;
|
||||
(self.buffer.get_unchecked_mut(self.len).as_ptr() as *const T).read()
|
||||
@ -481,6 +481,12 @@ impl<T, const N: usize> Vec<T, N> {
|
||||
self.len == self.capacity()
|
||||
}
|
||||
|
||||
/// Returns true if the vec is empty
|
||||
#[inline]
|
||||
pub fn is_empty(&self) -> bool {
|
||||
self.len == 0
|
||||
}
|
||||
|
||||
/// Returns `true` if `needle` is a prefix of the Vec.
|
||||
///
|
||||
/// Always returns `true` if `needle` is an empty slice.
|
||||
@ -849,6 +855,30 @@ mod tests {
|
||||
let mut _v: Vec<i32, 4> = Vec::new();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn is_full_empty() {
|
||||
let mut v: Vec<i32, 4> = Vec::new();
|
||||
|
||||
assert!(v.is_empty());
|
||||
assert!(!v.is_full());
|
||||
|
||||
v.push(1).unwrap();
|
||||
assert!(!v.is_empty());
|
||||
assert!(!v.is_full());
|
||||
|
||||
v.push(1).unwrap();
|
||||
assert!(!v.is_empty());
|
||||
assert!(!v.is_full());
|
||||
|
||||
v.push(1).unwrap();
|
||||
assert!(!v.is_empty());
|
||||
assert!(!v.is_full());
|
||||
|
||||
v.push(1).unwrap();
|
||||
assert!(!v.is_empty());
|
||||
assert!(v.is_full());
|
||||
}
|
||||
|
||||
macro_rules! droppable {
|
||||
() => {
|
||||
struct Droppable;
|
||||
|
Loading…
x
Reference in New Issue
Block a user