How to filter a vector of custom structs?

It’s very important programming skill to learn how to create a minimal, reproducible example. Your problem can be reduced to this: struct Vocabulary; fn main() { let numbers = vec![Vocabulary]; let other_numbers: Vec<Vocabulary> = numbers.iter().collect(); } Let’s look at the error message for your case: error[E0277]: a collection of type `std::vec::Vec<Vocabulary>` cannot be built from … Read more

Simultaneous mutable access to arbitrary indices of a large vector that are guaranteed to be disjoint

You can sort indices_to_update and extract mutable references by calling split_*_mut. let len = big_vector_of_elements.len(); while has_things_to_do() { let mut tail = big_vector_of_elements.as_mut_slice(); let mut indices_to_update = compute_indices(); // I assumed compute_indices() returns unsorted vector // to highlight the importance of sorted order indices_to_update.sort(); let mut elems = Vec::new(); for idx in indices_to_update { // … Read more

packed vs unpacked vectors in system verilog

This article gives more details about this issue: http://electrosofts.com/systemverilog/arrays.html, especially section 5.2. A packed array is a mechanism for subdividing a vector into subfields which can be conveniently accessed as array elements. Consequently, a packed array is guaranteed to be represented as a contiguous set of bits. An unpacked array may or may not be … Read more