/rust/registry/src/index.crates.io-1949cf8c6b5b557f/arrayvec-0.7.6/src/arrayvec_impl.rs
Line | Count | Source |
1 | | use std::ptr; |
2 | | use std::slice; |
3 | | |
4 | | use crate::CapacityError; |
5 | | |
6 | | /// Implements basic arrayvec methods - based on a few required methods |
7 | | /// for length and element access. |
8 | | pub(crate) trait ArrayVecImpl { |
9 | | type Item; |
10 | | const CAPACITY: usize; |
11 | | |
12 | | fn len(&self) -> usize; |
13 | | |
14 | | unsafe fn set_len(&mut self, new_len: usize); |
15 | | |
16 | | /// Return a slice containing all elements of the vector. |
17 | 10.3M | fn as_slice(&self) -> &[Self::Item] { |
18 | 10.3M | let len = self.len(); |
19 | | unsafe { |
20 | 10.3M | slice::from_raw_parts(self.as_ptr(), len) |
21 | | } |
22 | 10.3M | } Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<[u8; 32], 55> as arrayvec::arrayvec_impl::ArrayVecImpl>::as_slice Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<&[u8; 1024], 16> as arrayvec::arrayvec_impl::ArrayVecImpl>::as_slice Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<&[u8; 64], 16> as arrayvec::arrayvec_impl::ArrayVecImpl>::as_slice <arrayvec::arrayvec::ArrayVec<char, 32> as arrayvec::arrayvec_impl::ArrayVecImpl>::as_slice Line | Count | Source | 17 | 10.3M | fn as_slice(&self) -> &[Self::Item] { | 18 | 10.3M | let len = self.len(); | 19 | | unsafe { | 20 | 10.3M | slice::from_raw_parts(self.as_ptr(), len) | 21 | | } | 22 | 10.3M | } |
Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<u32, 96> as arrayvec::arrayvec_impl::ArrayVecImpl>::as_slice |
23 | | |
24 | | /// Return a mutable slice containing all elements of the vector. |
25 | 0 | fn as_mut_slice(&mut self) -> &mut [Self::Item] { |
26 | 0 | let len = self.len(); |
27 | 0 | unsafe { |
28 | 0 | std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) |
29 | 0 | } |
30 | 0 | } |
31 | | |
32 | | /// Return a raw pointer to the vector's buffer. |
33 | | fn as_ptr(&self) -> *const Self::Item; |
34 | | |
35 | | /// Return a raw mutable pointer to the vector's buffer. |
36 | | fn as_mut_ptr(&mut self) -> *mut Self::Item; |
37 | | |
38 | | #[track_caller] |
39 | 10.3M | fn push(&mut self, element: Self::Item) { |
40 | 10.3M | self.try_push(element).unwrap() |
41 | 10.3M | } Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<[u8; 32], 55> as arrayvec::arrayvec_impl::ArrayVecImpl>::push Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<&[u8; 1024], 16> as arrayvec::arrayvec_impl::ArrayVecImpl>::push Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<&[u8; 64], 16> as arrayvec::arrayvec_impl::ArrayVecImpl>::push <arrayvec::arrayvec::ArrayVec<char, 32> as arrayvec::arrayvec_impl::ArrayVecImpl>::push Line | Count | Source | 39 | 10.3M | fn push(&mut self, element: Self::Item) { | 40 | 10.3M | self.try_push(element).unwrap() | 41 | 10.3M | } |
Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<u32, 96> as arrayvec::arrayvec_impl::ArrayVecImpl>::push |
42 | | |
43 | 10.3M | fn try_push(&mut self, element: Self::Item) -> Result<(), CapacityError<Self::Item>> { |
44 | 10.3M | if self.len() < Self::CAPACITY { |
45 | 10.3M | unsafe { |
46 | 10.3M | self.push_unchecked(element); |
47 | 10.3M | } |
48 | 10.3M | Ok(()) |
49 | | } else { |
50 | 0 | Err(CapacityError::new(element)) |
51 | | } |
52 | 10.3M | } Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<[u8; 32], 55> as arrayvec::arrayvec_impl::ArrayVecImpl>::try_push Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<&[u8; 1024], 16> as arrayvec::arrayvec_impl::ArrayVecImpl>::try_push Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<&[u8; 64], 16> as arrayvec::arrayvec_impl::ArrayVecImpl>::try_push <arrayvec::arrayvec::ArrayVec<char, 32> as arrayvec::arrayvec_impl::ArrayVecImpl>::try_push Line | Count | Source | 43 | 10.3M | fn try_push(&mut self, element: Self::Item) -> Result<(), CapacityError<Self::Item>> { | 44 | 10.3M | if self.len() < Self::CAPACITY { | 45 | 10.3M | unsafe { | 46 | 10.3M | self.push_unchecked(element); | 47 | 10.3M | } | 48 | 10.3M | Ok(()) | 49 | | } else { | 50 | 0 | Err(CapacityError::new(element)) | 51 | | } | 52 | 10.3M | } |
Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<u32, 96> as arrayvec::arrayvec_impl::ArrayVecImpl>::try_push |
53 | | |
54 | 10.3M | unsafe fn push_unchecked(&mut self, element: Self::Item) { |
55 | 10.3M | let len = self.len(); |
56 | 10.3M | debug_assert!(len < Self::CAPACITY); |
57 | 10.3M | ptr::write(self.as_mut_ptr().add(len), element); |
58 | 10.3M | self.set_len(len + 1); |
59 | 10.3M | } Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<[u8; 32], 55> as arrayvec::arrayvec_impl::ArrayVecImpl>::push_unchecked Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<&[u8; 1024], 16> as arrayvec::arrayvec_impl::ArrayVecImpl>::push_unchecked Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<&[u8; 64], 16> as arrayvec::arrayvec_impl::ArrayVecImpl>::push_unchecked <arrayvec::arrayvec::ArrayVec<char, 32> as arrayvec::arrayvec_impl::ArrayVecImpl>::push_unchecked Line | Count | Source | 54 | 10.3M | unsafe fn push_unchecked(&mut self, element: Self::Item) { | 55 | 10.3M | let len = self.len(); | 56 | 10.3M | debug_assert!(len < Self::CAPACITY); | 57 | 10.3M | ptr::write(self.as_mut_ptr().add(len), element); | 58 | 10.3M | self.set_len(len + 1); | 59 | 10.3M | } |
Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<u32, 96> as arrayvec::arrayvec_impl::ArrayVecImpl>::push_unchecked |
60 | | |
61 | 0 | fn pop(&mut self) -> Option<Self::Item> { |
62 | 0 | if self.len() == 0 { |
63 | 0 | return None; |
64 | 0 | } |
65 | | unsafe { |
66 | 0 | let new_len = self.len() - 1; |
67 | 0 | self.set_len(new_len); |
68 | 0 | Some(ptr::read(self.as_ptr().add(new_len))) |
69 | | } |
70 | 0 | } Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<[u8; 32], 55> as arrayvec::arrayvec_impl::ArrayVecImpl>::pop Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<u32, 96> as arrayvec::arrayvec_impl::ArrayVecImpl>::pop |
71 | | |
72 | 359k | fn clear(&mut self) { |
73 | 359k | self.truncate(0) |
74 | 359k | } Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<[u8; 32], 55> as arrayvec::arrayvec_impl::ArrayVecImpl>::clear Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<&[u8; 1024], 16> as arrayvec::arrayvec_impl::ArrayVecImpl>::clear Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<&[u8; 64], 16> as arrayvec::arrayvec_impl::ArrayVecImpl>::clear <arrayvec::arrayvec::ArrayVec<char, 32> as arrayvec::arrayvec_impl::ArrayVecImpl>::clear Line | Count | Source | 72 | 359k | fn clear(&mut self) { | 73 | 359k | self.truncate(0) | 74 | 359k | } |
Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<u32, 96> as arrayvec::arrayvec_impl::ArrayVecImpl>::clear |
75 | | |
76 | 359k | fn truncate(&mut self, new_len: usize) { |
77 | | unsafe { |
78 | 359k | let len = self.len(); |
79 | 359k | if new_len < len { |
80 | 359k | self.set_len(new_len); |
81 | 359k | let tail = slice::from_raw_parts_mut(self.as_mut_ptr().add(new_len), len - new_len); |
82 | 359k | ptr::drop_in_place(tail); |
83 | 359k | } |
84 | | } |
85 | 359k | } Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<[u8; 32], 55> as arrayvec::arrayvec_impl::ArrayVecImpl>::truncate Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<&[u8; 1024], 16> as arrayvec::arrayvec_impl::ArrayVecImpl>::truncate Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<&[u8; 64], 16> as arrayvec::arrayvec_impl::ArrayVecImpl>::truncate <arrayvec::arrayvec::ArrayVec<char, 32> as arrayvec::arrayvec_impl::ArrayVecImpl>::truncate Line | Count | Source | 76 | 359k | fn truncate(&mut self, new_len: usize) { | 77 | | unsafe { | 78 | 359k | let len = self.len(); | 79 | 359k | if new_len < len { | 80 | 359k | self.set_len(new_len); | 81 | 359k | let tail = slice::from_raw_parts_mut(self.as_mut_ptr().add(new_len), len - new_len); | 82 | 359k | ptr::drop_in_place(tail); | 83 | 359k | } | 84 | | } | 85 | 359k | } |
Unexecuted instantiation: <arrayvec::arrayvec::ArrayVec<u32, 96> as arrayvec::arrayvec_impl::ArrayVecImpl>::truncate |
86 | | } |
87 | | |