INNER CODE UNIT · Rust
build_singleton
Tencent/TNN · third_party/flatbuffers/rust/flexbuffers/src/builder/mod.rs:279
pub fn build_singleton<P: Pushable>(&mut self, p: P) {
self.reset();
p.push_to_builder(self);
let root = self.values.pop().unwrap();
store_root(&mut self.buffer, root);
}
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);