Crate kt_list_comprehensions

Crate kt_list_comprehensions 

Source
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 if clauses
  • 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.