Expand description
Python-like list comprehensions for Rust.
Provides a macro for list comprehensions with the following features:
- One or more nested list comprehensions
- Support for multiple
ifclauses - Supports Rust expressions and patterns
§Examples
use kt_list_comprehensions::list_comprehension;
let vec = vec![-1, 2, 2, 3, 4];
let result: Vec<i32> = list_comprehension![x * 2 for x in vec if x > 0].collect();
assert_eq!(result, [4, 4, 6, 8]);use kt_list_comprehensions::list_comprehension;
let vec_of_vectors = vec![vec![1, 2, 3], vec![4, 5, 6]];
let result: Vec<i32> = list_comprehension![x for vec in vec_of_vectors for x in vec].collect();
assert_eq!(result, [1, 2, 3, 4, 5, 6]);use kt_list_comprehensions::list_comprehension;
let vec = vec!["1", "2", "not a number", "-3"];
let parse_i32 = |string: &str| string.parse::<i32>();
let result: Vec<i32> = list_comprehension![parse_i32(number).unwrap() for number in vec if parse_i32(number).is_ok() if parse_i32(number).unwrap() > 0].collect();
assert_eq!(result, [1, 2]);Macros§
- list_
comprehension - Python-like list comprehensions in Rust.