Fix push function in `Array`

next
Sayan Nandan 3 years ago
parent 4a27f83e6b
commit b997afe89a

@ -115,8 +115,8 @@ impl<T, const N: usize> Array<T, N> {
ptr::write(self.as_mut_ptr().add(len), element);
self.set_len(len + 1);
}
pub fn push(&mut self, element: T) -> Result<(), ()> {
if self.capacity() < self.len() {
pub fn push_panic(&mut self, element: T) -> Result<(), ()> {
if self.len() < N {
// so we can push it in
unsafe { self.push_unchecked(element) };
Ok(())
@ -124,8 +124,8 @@ impl<T, const N: usize> Array<T, N> {
Err(())
}
}
pub fn push_panic(&mut self, element: T) {
self.push(element).unwrap();
pub fn push(&mut self, element: T) {
self.push_panic(element).unwrap();
}
pub fn pop(&mut self) -> Option<T> {
if self.len() == 0 {
@ -447,3 +447,10 @@ fn test_basic() {
Array::from([b'H', b'e', b'l', b'l', b'o', b' ', b'W', b'o', b'r', b'l', b'd'])
);
}
#[test]
fn test_uninitialized() {
let mut b: Array<u8, 16> = Array::new();
b.push(b'S');
assert_eq!(b.iter().count(), 1);
}

Loading…
Cancel
Save