Lowdash
liberocks/lowdash is a Lodash inspired utility library to manipulate array and object
π Installation
This library has no dependencies outside the Rust standard library.
π Documentation
You can find the generated documentation here
Utility functions for array:
- associate
- chunk
- compact
- count
- count_by
- count_values
- count_values_by
- drop
- drop_right
- drop_right_while
- drop_while
- earliest
- earliest_by
- fill
- filter
- filter_map
- filter_reject
- find
- find_duplicates
- find_duplicates_by
- find_index_of
- find_key
- find_key_by
- find_last_index_of
- find_or_else
- find_uniques
- find_uniques_by
- first
- first_or
- first_or_empty
- flat_map
- flatten
- foreach
- foreach_while
- group_by
- index_of
- interleave
- is_sorted
- is_sorted_by_key
- key_by
- last
- last_index_of
- last_or
- last_or_empty
- latest
- latest_by
- map
- max
- max_by
- min
- min_by
- nth
- partition_by
- reduce
- reduce_right
- reject
- reject_map
- repeat
- repeat_by
- replace
- replace_all
- reverse
- sample
- samples
- shuffle
- slice
- slice_to_map
- splice
- subset
- times
- uniq
- uniq_by
- drop_by_index
Utility functions for string manipulation:
- camel_case
- capitalize
- char_length
- chunk_string
- ellipsis
- kebab_case
- pascal_case
- random_string
- snake_case
- substring
- words
Utility functions for object manipulation:
- assign
- entries
- from_entries
- from_pairs
- has_key
- invert
- keys
- map_entries
- map_keys
- map_to_slice
- map_values
- omit_by
- omit_by_keys
- omit_by_values
- pick_by
- pick_by_keys
- pick_by_values
- to_pairs
- uniq_keys
- uniq_values
- value_or
- values
Utility functions for math:
- nearest_power_of_two
- range
- range_from
- range_with_step
- clamp
- sum
- sum_by
- product
- product_by
- mean
- mean_by
- percentile
- median
- interpolate
- permutation
- combination
- duration_between
camel_case
Converts a string to camelCase.
use camel_case;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
capitalize
Capitalizes the first letter of the input string and converts the rest to lowercase.
use capitalize;
assert_eq!;
assert_eq!;
assert_eq!;
char_length
Returns the length of a string in Unicode characters.
use char_length;
assert_eq!;
assert_eq!;
assert_eq!;
chunk_string
Splits a string into chunks of specified size.
use chunk_string;
let result = chunk_string;
assert_eq!;
earliest_by
Find the earliest item in a collection based on a custom iteratee function.
use ;
use earliest_by;
let t1 = UNIX_EPOCH;
let t2 = t1 + new;
let t3 = t1 + new;
let times = vec!;
let earliest_time = earliest_by;
assert_eq!;
let events = vec!;
let earliest_event = earliest_by;
assert_eq!;
earliest
Find the earliest time in a collection.
use ;
use earliest;
let t1 = UNIX_EPOCH;
let t2 = t1 + new;
let t3 = t1 + new;
let times = vec!;
let earliest_time = earliest;
assert_eq!;
ellipsis
Truncates a string and appends an ellipsis ("...") if it exceeds the specified length.
use ellipsis;
let result = ellipsis;
assert_eq!;
let result = ellipsis;
assert_eq!;
let result = ellipsis;
assert_eq!;
let result = ellipsis;
assert_eq!;
let result = ellipsis;
assert_eq!;
find_duplicates_by
Find all duplicate elements in a collection based on a key generated by the iteratee function.
use find_duplicates_by;
let numbers = vec!;
let result = find_duplicates_by;
assert_eq!; // Second occurrences of duplicated keys
use find_duplicates_by;
let people = vec!;
let result = find_duplicates_by;
assert_eq!;
find_duplicates
Find all duplicate elements in a collection (elements that appear more than once).
use find_duplicates;
let numbers = vec!;
let result = find_duplicates;
assert_eq!;
use find_duplicates;
let words = vec!;
let result = find_duplicates;
assert_eq!;
use find_duplicates;
let people = vec!;
let result = find_duplicates;
assert_eq!;
find_index_of
Find the first item in a collection that satisfies a predicate and return its index.
use find_index_of;
let numbers = vec!;
let predicate = ;
let result = find_index_of;
assert_eq!;
use find_index_of;
let numbers = vec!;
let result = find_index_of;
assert_eq!;
use find_index_of;
let people = vec!;
let result = find_index_of;
assert_eq!;
find_key_by
Find the key in a map that satisfies a predicate based on both key and value.
use find_key_by;
let mut map = new;
map.insert;
map.insert;
map.insert;
let result = find_key_by;
assert_eq!;
use find_key_by;
let mut map = new;
map.insert;
map.insert;
map.insert;
let result = find_key_by;
assert_eq!;
find_key
Find the key in a map that corresponds to a given value.
use find_key;
let mut map = new;
map.insert;
map.insert;
map.insert;
let result = find_key;
assert_eq!;
use find_key;
let mut map = new;
map.insert;
map.insert;
map.insert;
let result = find_key;
assert_eq!;
use find_key;
let mut map = new;
map.insert;
map.insert;
map.insert;
let result = find_key;
assert_eq!;
find_last_index_of
Find the last item in a collection that satisfies a predicate and return its index.
use find_last_index_of;
let numbers = vec!;
let predicate = ;
let result = find_last_index_of;
assert_eq!;
use find_last_index_of;
let numbers = vec!;
let result = find_last_index_of;
assert_eq!;
use find_last_index_of;
let people = vec!;
let result = find_last_index_of;
assert_eq!;
find_or_else
Find the first item in a collection that satisfies a predicate.
use find_or_else;
let numbers = vec!;
let predicate = ;
let result = find_or_else;
assert_eq!;
use find_or_else;
let numbers = vec!;
let result = find_or_else;
assert_eq!;
use find_or_else;
let people = vec!;
let fallback = Person ;
let result = find_or_else;
assert_eq!;
find_uniques
Find all unique elements in a collection (elements that appear exactly once).
use find_uniques;
let numbers = vec!;
let result = find_uniques;
assert_eq!;
use find_uniques;
let words = vec!;
let result = find_uniques;
assert_eq!;
use find_uniques;
let people = vec!;
let result = find_uniques;
assert_eq!;
find_uniques_by
Find all unique elements in a collection based on a key generated by the iteratee function.
use find_uniques_by;
let numbers = vec!;
let result = find_uniques_by; // Group by even/odd
assert_eq!; // No unique remainders
use find_uniques_by;
let people = vec!;
let result = find_uniques_by;
assert_eq!;
find
Find the first item in a collection that satisfies a predicate.
use find;
let numbers = vec!;
let predicate = ;
let result = find;
assert_eq!;
use find;
let numbers = vec!;
let result = find;
assert_eq!;
use find;
let people = vec!;
let result = find;
assert_eq!;
first_or_empty
Returns the first item from the collection.
use first_or_empty;
let numbers = vec!;
let first_num = first_or_empty;
assert_eq!;
let empty: = vec!;
let first_num = first_or_empty;
assert_eq!; // i32::default() is 0
use first_or_empty;
let people = vec!;
let first_person = first_or_empty;
assert_eq!;
let empty_people: = vec!;
let first_person = first_or_empty;
assert_eq!;
first_or
Returns the first item from the collection.
use first_or;
let numbers = vec!;
let first_num = first_or;
assert_eq!;
let empty: = vec!;
let first_num = first_or;
assert_eq!;
use first_or;
let people = vec!;
let first_person = first_or;
assert_eq!;
let empty_people: = vec!;
let first_person = first_or;
assert_eq!;
first
Returns the first item from the collection.
use first;
let numbers = vec!;
let = first;
assert_eq!;
assert!;
let empty: = vec!;
let = first;
assert_eq!; // i32::default() is 0
assert!;
index_of
Finds the position of the first occurrence of an element in a collection.
use index_of;
let collection = vec!;
let index = index_of;
assert_eq!;
use index_of;
let collection = vec!;
let index = index_of;
assert_eq!;
use index_of;
let collection = vec!;
let index = index_of;
assert_eq!;
kebab_case
Converts a string to kebab-case.
use kebab_case;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
last_index_of
Finds the position of the last occurrence of an element in a collection.
use last_index_of;
let collection = vec!;
let index = last_index_of;
assert_eq!;
use last_index_of;
let collection = vec!;
let index = last_index_of;
assert_eq!;
use last_index_of;
let collection = vec!;
let index = last_index_of;
assert_eq!;
last_or_empty
Returns the last item from the collection.
use last_or_empty;
let numbers = vec!;
let last_num = last_or_empty;
assert_eq!;
let empty: = vec!;
let last_num = last_or_empty;
assert_eq!; // i32::default() is 0
use last_or_empty;
let people = vec!;
let last_person = last_or_empty;
assert_eq!;
let empty_people: = vec!;
let last_person = last_or_empty;
assert_eq!;
last_or
Returns the last item from the collection.
use last_or;
let numbers = vec!;
let last_num = last_or;
assert_eq!;
let empty: = vec!;
let last_num = last_or;
assert_eq!;
last
Returns the last item from the collection.
use last;
let numbers = vec!;
let = last;
assert_eq!;
assert!;
let empty: = vec!;
let = last;
assert_eq!; // i32::default() is 0
assert!;
use last;
let people = vec!;
let = last;
assert_eq!;
assert!;
let empty_people: = vec!;
let = last;
assert_eq!;
assert!;
latest_by
Returns the item from the collection for which the iteratee returns the latest SystemTime.
use ;
use latest_by;
let records = vec!;
let latest_record = latest_by;
assert_eq!;
latest
Returns the latest SystemTime from the provided arguments.
use ;
use latest;
let now = now;
let later = now + new;
let latest_time = latest;
assert_eq!;
max_by
Find the maximum element in a collection based on a custom comparison function.
use max_by;
let people = vec!;
let result = max_by;
assert_eq!;
max
Find the maximum element in a collection.
use max;
let numbers = vec!;
let result = max;
assert_eq!;
use max;
let strings = vec!;
let result = max;
assert_eq!;
use max;
let people = vec!;
let result = max;
assert_eq!;
use max;
let collection = vec!;
let result = max;
assert_eq!;
min_by
Find the minimum element in a collection based on a custom comparison function.
use min_by;
let numbers = vec!;
let min = min_by;
assert_eq!;
let strings = vec!;
let min = min_by;
assert_eq!;
let empty: = vec!;
let min = min_by;
assert_eq!;
min
Find the minimum element in a collection.
use min;
let numbers = vec!;
let result = min;
assert_eq!;
use min;
let strings = vec!;
let result = min;
assert_eq!;
use min;
let people = vec!;
let result = min;
assert_eq!;
use min;
let collection = vec!;
let result = min;
assert_eq!;
nearest_power_of_two
Calculates the smallest power of two greater than or equal to the given capacity.
use nearest_power_of_two;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
nth
Returns the nth element from the collection.
use nth;
let numbers = vec!;
let result = nth;
assert_eq!;
let result = nth;
assert_eq!;
let result = nth;
assert!;
pascal_case
Converts a string to PascalCase.
use pascal_case;
assert_eq!;
assert_eq!;
assert_eq!;
random_string
Generates a random string of a specified size using the provided charset.
use ALPHANUMERIC_CHARSET;
use random_string;
let charset = ALPHANUMERIC_CHARSET;
let random_str = random_string;
assert_eq!;
for c in random_str.chars
sample
Returns a pseudo-random element from the collection.
use sample;
let numbers = vec!;
let result = sample;
assert!;
let empty: = vec!;
let result = sample;
assert_eq!; // i32::default()
samples
Returns a slice of pseudo-randomly selected elements from the collection.
use samples;
let numbers = vec!;
let result = samples;
assert_eq!;
assert!;
snake_case
Converts a string to snake_case.
use snake_case;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
substring
Extracts a substring from the given string based on the specified offset and length.
use substring;
let s = Stringfrom;
assert_eq!;
let s = Stringfrom;
assert_eq!;
let s = Stringfrom;
assert_eq!;
let s = Stringfrom;
assert_eq!;
words
Splits a string into words based on casing, digits, and separators.
use words;
let result = words;
assert_eq!;
let result = words;
assert_eq!;
let result = words;
assert_eq!;
reject
Reject items from a collection that satisfy a predicate.
use reject;
let numbers = vec!;
let result = reject;
assert_eq!;
filter
Filter items from a collection that satisfy a predicate.
use filter;
let numbers = vec!;
let result = filter;
assert_eq!;
use filter;
let people = vec!;
let result = filter;
assert_eq!;
map
Apply a function to each item in a collection, producing a new collection of results.
use map;
let numbers = vec!;
let result = map;
assert_eq!;
use map;
let people = vec!;
let names: = map;
assert_eq!;
filter_map
Apply a function to each item in a collection, filtering and transforming items based on a callback.
use filter_map;
let numbers = vec!;
// Double even numbers
let result = filter_map;
assert_eq!;
use filter_map;
let people = vec!;
// Extract names of people older than 28
let names: = filter_map;
assert_eq!;
flat_map
Apply a function to each item in a collection, flattening the results based on a callback.
use flat_map;
let numbers = vec!;
// For each number, generate a vector containing the number and its double
let result = flat_map;
assert_eq!;
use flat_map;
let people = vec!;
// Extract all hobbies from the list of people
let all_hobbies: = flat_map;
assert_eq!;
reduce
Apply a function to each item in a collection, accumulating a single result.
use reduce;
let numbers = vec!;
// Sum of all numbers
let sum = reduce;
assert_eq!;
use reduce;
let people = vec!;
// Concatenate all names
let all_names = reduce;
assert_eq!;
reduce_right
Apply a function to each item in a collection, accumulating a single result from right to left.
use reduce_right;
let numbers = vec!;
// Sum of all numbers using reduce_right
let sum = reduce_right;
assert_eq!;
use reduce_right;
let people = vec!;
// Concatenate all names in reverse order
let all_names = reduce_right;
assert_eq!;
foreach
Execute a function on each item in a collection.
use foreach;
let numbers = vec!;
let mut sum = 0;
foreach;
assert_eq!;
use foreach;
let people = vec!;
let mut names = Vecnew;
foreach;
assert_eq!;
foreach_while
Execute a function on each item in a collection until the iteratee returns false.
use foreach_while;
let numbers = vec!;
let mut sum = 0;
foreach_while;
assert_eq!;
use foreach_while;
let people = vec!;
let mut names = Vecnew;
foreach_while;
assert_eq!;
use foreach_while;
let numbers = vec!;
let mut collected = Vecnew;
foreach_while;
assert_eq!;
times
Generates a collection by invoking the provided function iteratee a specified number of times.
use times;
let result = times;
assert_eq!;
use times;
let result = times;
assert_eq!;
uniq
Remove duplicate elements from a collection, preserving the order of their first occurrence.
use uniq;
let numbers = vec!;
let unique_numbers = uniq;
assert_eq!;
use uniq;
let people = vec!;
let unique_people = uniq;
assert_eq!;
uniq_by
Remove duplicate elements from a collection based on a key extracted by a provided function, preserving the order of their first occurrence.
use uniq_by;
let numbers = vec!;
let unique_numbers = uniq_by;
assert_eq!;
use uniq_by;
let people = vec!;
let unique_people = uniq_by;
assert_eq!;
group_by
Group elements of a collection based on a key extracted by a provided function, preserving the order of their first occurrence.
use group_by;
let numbers = vec!;
let grouped = group_by;
assert_eq!;
assert_eq!;
use group_by;
let people = vec!;
let grouped = group_by;
assert_eq!;
assert_eq!;
chunk
Divide a collection into smaller chunks of a specified size, preserving the order of elements.
use chunk;
let numbers = vec!;
let chunks = chunk;
assert_eq!;
use chunk;
let people = vec!;
let chunks = chunk;
assert_eq!;
partition_by
Divide a collection into partitions based on a key extracted by a provided function, preserving the order of elements and the order of partitions as they first appear.
use partition_by;
let numbers = vec!;
let partitions = partition_by;
assert_eq!;
use partition_by;
let people = vec!;
let partitions = partition_by;
assert_eq!;
flatten
Flatten a collection of slices into a single vector, preserving the order of elements.
use flatten;
let nested = vec!;
let flat = flatten;
assert_eq!;
use flatten;
let people_groups = vec!;
let flat_people = flatten;
assert_eq!;
interleave
Interleave multiple collections into a single vector, preserving the order of elements.
use interleave;
let a = vec!;
let b = vec!;
let c = vec!;
let result = interleave;
assert_eq!;
use interleave;
let group1 = vec!;
let group2 = vec!;
let group3 = vec!;
let interleaved = interleave;
assert_eq!;
shuffle
Shuffle a collection, returning a new vector with the elements in random order.
use shuffle;
let numbers = vec!;
let shuffled = shuffle;
assert_eq!;
assert!;
assert!;
assert!;
assert!;
assert!;
reverse
Reverse a collection, returning a new vector with the elements in reverse order.
use reverse;
let numbers = vec!;
let reversed = reverse;
assert_eq!;
use reverse;
let people = vec!;
let reversed_people = reverse;
assert_eq!;
fill
Fill a collection with a specified value, returning a new vector with all elements set to the initial value.
use fill;
let numbers = vec!;
let filled = fill;
assert_eq!;
use fill;
let people = vec!;
let filled_people = fill;
assert_eq!;
repeat
Fill a collection with a specified value, returning a new vector with all elements set to the initial value.
use repeat;
let filled = repeat;
assert_eq!;
use repeat;
let filled_people = repeat;
assert_eq!;
repeat_by
Repeat a specified value count times by applying a predicate function to each index, returning a new vector with the generated elements.
use repeat_by;
let filled = repeat_by;
assert_eq!;
use repeat_by;
let filled_people = repeat_by;
assert_eq!;
key_by
Creates a HashMap by mapping each element in a collection to a key using an iteratee function.
use key_by;
use HashMap;
let numbers = vec!;
let map = key_by;
let mut expected = new;
expected.insert; // Last odd number
expected.insert; // Last even number
assert_eq!;
use key_by;
use HashMap;
let people = vec!;
let map = key_by;
let mut expected = new;
expected.insert;
expected.insert;
expected.insert;
assert_eq!;
use key_by;
use HashMap;
let strings = vec!;
let map = key_by;
let mut expected = new;
expected.insert;
expected.insert;
assert_eq!;
associate
Creates a HashMap by transforming each element in a collection into a key-value pair using a provided function.
use associate;
use HashMap;
let numbers = vec!;
let map = associate;
let mut expected = new;
expected.insert;
expected.insert;
expected.insert;
expected.insert;
expected.insert;
assert_eq!;
use associate;
use HashMap;
let people = vec!;
let map = associate;
let mut expected = new;
expected.insert;
expected.insert;
expected.insert;
assert_eq!;
use associate;
use HashMap;
let strings = vec!;
let map = associate;
let mut expected = new;
expected.insert; // "apricot" has 7 characters
expected.insert; // "blueberry" has 9 characters
assert_eq!;
slice_to_map
Transforms a slice of items into a HashMap by applying a provided function to each item.
use slice_to_map;
use HashMap;
let numbers = vec!;
let map = slice_to_map;
let mut expected = new;
expected.insert;
expected.insert;
expected.insert;
expected.insert;
expected.insert;
assert_eq!;
use slice_to_map;
use HashMap;
let people = vec!;
let map = slice_to_map;
let mut expected = new;
expected.insert;
expected.insert;
expected.insert;
assert_eq!;
use slice_to_map;
use HashMap;
let strings = vec!;
let map = slice_to_map;
let mut expected = new;
expected.insert; // "apricot" has 7 characters
expected.insert; // "blueberry" has 9 characters
assert_eq!;
drop
Removes the first n elements from a collection and returns the remaining elements.
use drop;
let numbers = vec!;
let result = drop;
assert_eq!;
use drop;
let letters = vec!;
let result = drop;
assert_eq!;
drop_right
Removes the last n elements from a collection and returns the remaining elements.
use drop_right;
let numbers = vec!;
let result = drop_right;
assert_eq!;
use drop_right;
let letters = vec!;
let result = drop_right;
assert_eq!;
drop_while
Removes elements from the beginning of a collection as long as a predicate returns true, and returns the remaining elements. As soon as the predicate returns false, the function stops dropping elements.
use drop_while;
let numbers = vec!;
let result = drop_while;
assert_eq!;
use drop_while;
let letters = vec!;
let result = drop_while;
assert_eq!;
drop_right_while
Removes elements from the end of a collection as long as a predicate returns true, and returns the remaining elements. As soon as the predicate returns false, the function stops dropping elements.
use drop_right_while;
let numbers = vec!;
let result = drop_right_while;
assert_eq!;
use drop_right_while;
let letters = vec!;
let result = drop_right_while;
assert_eq!;
drop_by_index
Removes elements from a collection at the specified indices. Supports negative indices which count from the end of the collection. Indices that are out of bounds are ignored.
use drop_by_index;
let numbers = vec!;
let result = drop_by_index;
assert_eq!;
use drop_by_index;
let letters = vec!;
let result = drop_by_index;
assert_eq!;
reject_map
Applies a callback function to each item in a collection along with its index and collects the results where the callback returns false.
use reject_map;
let numbers = vec!;
// Collect squares of odd numbers
let result = reject_map;
assert_eq!;
use reject_map;
let people = vec!;
// Collect names of people who are not above 30
let result = reject_map;
assert_eq!;
filter_reject
Filters a collection into two separate vectors based on a predicate function.
use filter_reject;
let numbers = vec!;
// Separate even and odd numbers
let = filter_reject;
assert_eq!;
assert_eq!;
use filter_reject;
let people = vec!;
// Separate people who are at least 30 years old
let = filter_reject;
assert_eq!;
assert_eq!;
count
Counts the number of occurrences of a specific value in a collection.
use count;
let numbers = vec!;
let result = count;
assert_eq!;
use count;
let people = vec!;
let count_alice = count;
assert_eq!;
count_by
Counts the number of elements in a collection that satisfy a given predicate.
use count_by;
let numbers = vec!;
// Count even numbers
let result = count_by;
assert_eq!;
use count_by;
let people = vec!;
// Count people who are at least 30 years old
let count_adults = count_by;
assert_eq!;
count_values
Counts the number of occurrences of each value in a collection.
use count_values;
use HashMap;
let numbers = vec!;
let result = count_values;
let mut expected = new;
expected.insert;
expected.insert;
expected.insert;
expected.insert;
expected.insert;
assert_eq!;
use count_values;
use HashMap;
let people = vec!;
let result = count_values;
let mut expected = new;
expected.insert;
expected.insert;
expected.insert;
assert_eq!;
count_values_by
Counts the number of occurrences of each value in a collection after applying a mapper function.
use count_values_by;
use HashMap;
let chars = vec!;
let result = count_values_by;
let mut expected = new;
expected.insert;
expected.insert;
expected.insert;
expected.insert;
assert_eq!;
use count_values_by;
use HashMap;
let numbers = vec!;
let result = count_values_by;
let mut expected = new;
expected.insert;
expected.insert;
expected.insert;
expected.insert;
expected.insert;
assert_eq!;
subset
Returns a subset of the collection based on the provided offset and length.
use subset;
let numbers = vec!;
let result = subset;
assert_eq!;
slice
Returns a subset of the collection based on the provided start and end indices.
use slice;
let numbers = vec!;
let result = slice;
assert_eq!;
use slice;
let numbers = vec!;
let result = slice;
assert_eq!;
use slice;
let people = vec!;
let result = slice;
assert_eq!;
replace
Replaces occurrences of a specified value in a collection with a new value, up to a maximum number of replacements.
use replace;
let numbers = vec!;
let result = replace;
assert_eq!;
use replace;
let people = vec!;
let new_person = Person ;
let result = replace;
assert_eq!;
replace_all
Replaces all occurrences of a specified value in a collection with a new value.
use replace_all;
let numbers = vec!;
let result = replace_all;
assert_eq!;
use replace_all;
let people = vec!;
let dave = Person ;
let result = replace_all;
assert_eq!;
compact
Removes all zero-valued elements from a collection, preserving the order of non-zero elements.
This function iterates over a slice of items, removing each element that is equal to the zero value.
The zero value is determined by the Default trait implementation for the type T.
The function preserves the order of the remaining elements and does not modify the original collection.
Time Complexity: O(n), where n is the number of elements in the collection.
Arguments
collection- A slice of items from which to remove zero-valued elements.
Type Parameters
T- The type of elements in the collection. Must implementPartialEq,Clone, andDefault.
Returns
Vec<T>- A new vector containing only the non-zero elements from the input collection.
Examples
use compact;
let numbers = vec!;
let compacted = compact;
assert_eq!;
use compact;
let people = vec!;
let compacted = compact;
assert_eq!;
use compact;
let floats = vec!;
let compacted = compact;
assert_eq!;
is_sorted
Determines if a collection is sorted in ascending order.
use is_sorted;
let numbers = vec!;
assert_eq!;
use is_sorted;
let numbers = vec!;
assert_eq!;
use is_sorted;
let people = vec!;
assert_eq!;
use is_sorted;
let floats = vec!;
assert_eq!;
use is_sorted;
let floats = vec!;
// Note: Any comparison with NaN returns false, so the slice is not considered sorted.
assert_eq!;
is_sorted_by_key
Determines if a collection is sorted in ascending order based on a specified key.
use is_sorted_by_key;
let numbers = vec!;
let result = is_sorted_by_key;
assert_eq!;
use is_sorted_by_key;
let numbers = vec!;
let result = is_sorted_by_key;
assert_eq!;
use is_sorted_by_key;
let people = vec!;
let result = is_sorted_by_key;
assert_eq!;
use is_sorted_by_key;
let floats = vec!;
let result = is_sorted_by_key;
assert_eq!;
splice
Inserts elements into a collection at a specified index, handling negative indices and overflow.
use splice;
let numbers = vec!;
let elements = vec!;
let result = splice;
assert_eq!;
use splice;
let numbers = vec!;
let elements = vec!;
// Insert at the end
let result = splice;
assert_eq!;
use splice;
let numbers = vec!;
let elements = vec!;
// Insert at negative index (-2 means len - 2 = 3)
let result = splice;
assert_eq!;
use splice;
let numbers = vec!;
let elements = vec!;
// Negative index beyond the start, insert at beginning
let result = splice;
assert_eq!;
keys
Collects all keys from one or more maps into a single vector.
use keys;
use HashMap;
let mut map1 = new;
map1.insert;
map1.insert;
let mut map2 = new;
map2.insert;
map2.insert;
let result = keys;
assert_eq!;
assert!;
assert!;
assert!;
assert!;
uniq_keys
Collects all unique keys from one or more maps into a single vector.
use uniq_keys;
use HashMap;
let mut map1 = new;
map1.insert;
map1.insert;
let mut map2 = new;
map2.insert;
map2.insert;
let result = uniq_keys;
assert_eq!;
assert!;
assert!;
assert!;
has_key
Checks if a map contains a specific key.
use has_key;
use HashMap;
let mut map = new;
map.insert;
map.insert;
assert!;
assert!;
values
Collects all values from one or more maps into a single vector.
use values;
use HashMap;
let mut map1 = new;
map1.insert;
map1.insert;
let mut map2 = new;
map2.insert;
map2.insert;
let result = values;
assert_eq!;
assert!;
assert!;
assert!;
assert!;
uniq_values
Collects all unique values from one or more maps into a single vector.
use uniq_values;
use HashMap;
let mut map1 = new;
map1.insert;
map1.insert;
let mut map2 = new;
map2.insert;
map2.insert;
let result = uniq_values;
assert_eq!;
assert!;
assert!;
assert!;
value_or
Returns a value from a map for a given key, or a fallback value if the key doesn't exist.
use value_or;
use HashMap;
let mut map = new;
map.insert;
assert_eq!;
assert_eq!;
pick_by
Filters a map by applying a predicate to its key-value pairs.
use pick_by;
use HashMap;
let mut map = new;
map.insert;
map.insert;
map.insert;
let result = pick_by;
assert_eq!;
assert!;
assert!;
pick_by_keys
Filters a map by selecting only the specified keys.
use pick_by_keys;
use HashMap;
let mut map = new;
map.insert;
map.insert;
map.insert;
let keys = vec!;
let result = pick_by_keys;
assert_eq!;
assert!;
assert!;
pick_by_values
Filters a map by selecting only the specified values.
use pick_by_values;
use HashMap;
let mut map = new;
map.insert;
map.insert;
map.insert;
let values = vec!;
let result = pick_by_values;
assert_eq!;
assert!;
assert!;
omit_by
Filters a map by omitting key-value pairs that satisfy a predicate.
use omit_by;
use HashMap;
let mut map = new;
map.insert;
map.insert;
map.insert;
let result = omit_by;
assert_eq!;
assert!;
assert!;
assert!;
omit_by_keys
Filters a map by omitting specified keys.
use omit_by_keys;
use HashMap;
let mut map = new;
map.insert;
map.insert;
map.insert;
let keys = vec!;
let result = omit_by_keys;
assert_eq!;
assert!;
assert!;
assert!;
omit_by_values
Filters a map by omitting key-value pairs that have values present in the provided values slice.
use omit_by_values;
use HashMap;
let mut map = new;
map.insert;
map.insert;
map.insert;
let values = vec!;
let result = omit_by_values;
assert_eq!;
assert!;
assert!;
assert!;
entries
Collects all entries from a map into a vector of Entry structs.
use ;
use HashMap;
let mut map = new;
map.insert;
map.insert;
let result = entries;
let expected = vec!;
let mut sorted_result = result.clone;
sorted_result.sort_by;
let mut sorted_expected = expected.clone;
sorted_expected.sort_by;
assert_eq!;
to_pairs
Collects all entries from a map into a vector of Entry structs.
use ;
use HashMap;
let mut map = new;
map.insert;
map.insert;
let result = to_pairs;
let expected = vec!;
let mut sorted_result = result.clone;
sorted_result.sort_by;
let mut sorted_expected = expected.clone;
sorted_expected.sort_by;
assert_eq!;
from_entries
Constructs a HashMap from a slice of Entry structs.
use ;
use HashMap;
let entries = vec!;
let result = from_entries;
let mut expected = new;
expected.insert;
expected.insert;
assert_eq!;
for in &expected
from_pairs
Constructs a HashMap from a slice of Entry structs.
use ;
use HashMap;
let entries = vec!;
let result = from_pairs;
let mut expected = new;
expected.insert;
expected.insert;
assert_eq!;
for in &expected
invert
Constructs a HashMap by inverting the keys and values of the input map.
use ;
use HashMap;
let mut map = new;
map.insert;
map.insert;
map.insert;
let result = invert;
let mut expected = new;
expected.insert;
expected.insert;
expected.insert;
assert_eq!;
for in &expected
assign
Merges multiple maps into a single map. If the same key exists in multiple maps, the value from the last map is used.
use assign;
use HashMap;
let mut map1 = new;
map1.insert;
let mut map2 = new;
map2.insert;
let merged = assign;
assert_eq!;
assert_eq!;
map_values
Transforms the values of a map using a provided function.
use lowdash::map_values;
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("a", 1);
map.insert("b", 2);
let transformed = map_values(&map, |&v, _k| v * 10);
assert_eq!(transformed.get("a"), Some(&10));
assert_eq!(transformed.get("b"), Some(&20));
map_keys
Transforms the keys of a map using a provided function.
use map_keys;
use HashMap;
let mut map = new;
map.insert;
map.insert;
let transformed = map_keys;
assert_eq!;
assert_eq!;
map_entries
Transforms the entries of a map using a provided function.
use map_entries;
use HashMap;
let mut map = new;
map.insert;
map.insert;
let transformed = map_entries;
assert_eq!;
assert_eq!;
map_to_slice
Transforms the entries of a map into a slice using a provided function.
use map_to_slice;
use HashMap;
let mut map = new;
map.insert;
map.insert;
let transformed = map_to_slice;
assert!;
assert!;
range
Generate a range of integers from 0 to element_num (exclusive).
If element_num is negative, generate a range from 0 to -element_num (exclusive) with a step of -1.
use range;
let result = range;
assert_eq!;
use range;
let result = range;
assert_eq!;
range_from
Generate a range of numbers starting from a given value.
If element_num is negative, generate a range with a step of -1.
use range_from;
let result = range_from;
assert_eq!;
use range_from;
let result = range_from;
assert_eq!;
range_with_step
Generate a range of numbers from start to end (exclusive) with a specified step.
use range_with_steps;
let result = range_with_steps;
assert_eq!;
use range_with_steps;
let result = range_with_steps;
assert_eq!;
use range_with_steps;
let result = range_with_steps; // Empty range
assert_eq!;
clamp
Clamps a value between a minimum and maximum value. If the value is less than the minimum, returns the minimum. If the value is greater than the maximum, returns the maximum. Otherwise, returns the value unchanged.
use clamp;
assert_eq!; // Value within range
assert_eq!; // Value below minimum
assert_eq!; // Value above maximum
sum
Calculates the sum of all elements in a collection.
use sum;
// Integer sum
assert_eq!;
// Float sum
assert_eq!;
sum_by
Calculates the sum of values obtained by applying a function to each element in a collection.
use sum_by;
let numbers = vec!;
let result = sum_by;
assert_eq!; // (1*2 + 2*2 + 3*2 + 4*2)
product
Calculate the product of all elements in a collection. If the collection is empty, returns 1 (multiplicative identity).
use product;
// Integer product
let numbers = vec!;
assert_eq!;
use product;
// Float product
let numbers = vec!;
assert_eq!;
use product;
// Empty collection returns 1
let empty: = vec!;
assert_eq!;
product_by
Calculate the product of values obtained by applying a function to each element in a collection. If the collection is empty, returns 1 (multiplicative identity).
use product_by;
let numbers = vec!;
let result = product_by;
assert_eq!; // (1*2) * (2*2) * (3*2) * (4*2)
use product_by;
let rectangles = vec!;
let total_area = product_by;
assert_eq!; // (2*3) * (4*5)
mean
Calculates the arithmetic mean of a collection of numbers. If the collection is empty, returns zero.
use mean;
let numbers = vec!;
let result = mean;
assert_eq!;
use mean;
let numbers = vec!;
let result = mean;
assert_eq!;
use mean;
let empty: = vec!;
let result = mean;
assert_eq!;
mean_by
Calculates the mean value of a collection after applying a transformation function to each element.
use mean_by;
let objects = vec!;
let mean = mean_by;
assert!;
// Calculate mean of y coordinates
let mean_y = mean_by;
assert!;
percentile
Calculates the specified percentile of a collection. The percentile should be a value between 0 and 100. The collection will be sorted before calculation. Uses linear interpolation between closest ranks for non-integer results.
use percentile;
let numbers = vec!;
let result = percentile;
assert!;
use percentile;
let numbers = vec!;
let result = percentile;
assert!;
median
Calculate the median value of a collection. The median is the 50th percentile of a collection. For collections with an even number of elements, the median is the average of the two middle values. The collection will be sorted before calculation.
use median;
let numbers = vec!;
let result = median;
assert!;
use median;
let numbers = vec!;
let result = median;
assert!;
interpolate
Performs linear interpolation between two values.
use interpolate;
let lerp = interpolate;
assert_eq!;
use interpolate;
let lerp = interpolate;
assert_eq!;
assert_eq!;
permutation
Finds all permutations of k elements from a collection.
use permutation;
let items = vec!;
let result = permutation;
// Expected permutations: [ [1,2], [1,3], [2,1], [2,3], [3,1], [3,2] ]
assert_eq!;
assert!;
combination
Finds all combinations of k elements from a collection.
use combination;
let items = vec!;
let result = combination;
assert_eq!;
// One possible combination: [2, 3]
assert!;
duration_between
Returns the absolute difference between two dates in the specified unit.
use ;
use ;
let epoch = UNIX_EPOCH;
let one_year = from_secs;
let later = epoch + one_year;
// Difference in years
assert_eq!;
let one_day = from_secs;
let day_later = epoch + one_day;
// Difference in days
assert_eq!;