INNER CODE UNIT · Rust
push
Tencent/TNN · third_party/flatbuffers/rust/flexbuffers/src/builder/mod.rs:285
fn push<P: Pushable>(&mut self, p: P) {
p.push_to_builder(self);
}
/// Stores the values past `previous_end` as a map or vector depending on `is_map`.
/// If `previous_end` is None then this was a root map / vector and the last value
/// is stored as the root.
fn end_map_or_vector(&mut self, is_map: bool, previous_end: Option<usize>) {
let split = previous_end.unwrap_or(0);
let value = if is_map {
let key_vals = &mut self.values[split..];
sort_map_by_keys(key_vals, &self.buffer);
let key_vector = store_vector(&mut self.buffer, key_vals, StoreOption::MapKeys);
store_vector(&mut self.buffer, key_vals, StoreOption::Map(key_vector))
} else {
store_vector(&mut self.buffer, &self.values[split..], StoreOption::Vector)
};
self.values.truncate(split);
if previous_end.is_some() {