pub struct WeightedValue {
pub entries: Vec<(i32, Value)>,
}Expand description
The payload of Value::Map: an insertion-ordered map with scalar keys.
Backed by a flat Vec of (key, value) entries. Game-scale maps are
small, and a flat vector beats persistent/HAMT or hashed structures on both
constant factors and wasm size (value-model-spec §5). Iteration is
insertion order — the ratified ruling for v1 (§4) — so the structure is
deterministic without any sorting, and there is no HashMap to leak
iteration order.
insert/remove preserve insertion order: re-inserting an existing key
overwrites its value in place (keeping the key’s original position), and
The payload of a Value::Weighted (NS-A7, docs/stdlib-spec.md §8):
positive-int weights over values, kept in construction order.
PartialEq is hand-written: equality is multiset content — the same
(weight, value) entries with the same multiplicities, regardless of
order (the #909 map content-over-form precedent applied to the F17
multiset: weighted(3, "a", 1, "b") == weighted(1, "b", 3, "a")).
Duplicate entries are legal and multiplicity-sensitive. Construction
order still governs display and the roll draw walk (deterministic
offset → entry mapping), exactly as map iteration order survives the
order-insensitive map equality. O(n²) matching — the accepted trade for
small, hand-written game-scale tables (same as OrderedMap).
Fields§
§entries: Vec<(i32, Value)>(weight, value) entries in construction order. Invariant (held by
the only producer, weighted_new, and the wire reader): non-empty,
every weight ≥ 1.
Implementations§
Source§impl WeightedValue
impl WeightedValue
Sourcepub fn total_weight(&self) -> i64
pub fn total_weight(&self) -> i64
The total weight of the table as an i64 (a sum of i32 weights
can exceed i32::MAX; the draw walks in i64).
Trait Implementations§
Source§impl Clone for WeightedValue
impl Clone for WeightedValue
Source§fn clone(&self) -> WeightedValue
fn clone(&self) -> WeightedValue
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more