MCPcopy Create free account
hub / github.com/SoftbearStudios/bitcode / encode

Method encode

src/derive/vec.rs:141–159  ·  view source on GitHub ↗
(&mut self, v: &[T])

Source from the content-addressed store, hash-verified

139impl<T: Encode> Encoder<[T]> for VecEncoder<T> {
140 #[inline(always)]
141 fn encode(&mut self, v: &[T]) {
142 let n = v.len();
143 self.lengths.encode(&n);
144
145 if let Some(primitive) = self.elements.as_primitive() {
146 primitive.reserve(n);
147 unsafe {
148 let ptr = primitive.end_ptr();
149 v.as_ptr().copy_to_nonoverlapping(ptr, n);
150 primitive.set_end_ptr(ptr.add(n));
151 }
152 } else if let Some(n) = NonZeroUsize::new(n) {
153 self.elements.reserve(n);
154 // Uses chunks to keep everything in the CPU cache. TODO pick optimal chunk size.
155 for chunk in v.chunks(MAX_VECTORED_CHUNK) {
156 self.elements.encode_vectored(chunk.iter());
157 }
158 }
159 }
160
161 #[inline(always)]
162 fn encode_vectored<'a>(&mut self, i: impl Iterator<Item = &'a [T]> + Clone)

Callers 1

encode_vectoredMethod · 0.45

Calls 8

end_ptrMethod · 0.80
as_ptrMethod · 0.80
set_end_ptrMethod · 0.80
as_sliceMethod · 0.80
lenMethod · 0.45
as_primitiveMethod · 0.45
reserveMethod · 0.45
encode_vectoredMethod · 0.45

Tested by

no test coverage detected