Cute
Macro for Python-esque list comprehensions in Rust.
The c!
macro implements list and hashmap comprehensions similar to those found in Python,
allowing for conditionals and nested comprehensions.
Python Syntax
=
=
=
c! Syntax
let squares = c!;
let even_squares = c!;
let squares_hashmap = c!;
Note c!
's has the comprehension's parts, comma-separated.
Examples
Simpe comprehension
extern crate cute;
let v = ;
let v_squared = c!;
Conditional filtering
let squares = c!;
assert_eq!;
Nested Comprehensions
let nested = vec!;
let flat: = c!;
assert_eq!;
let nested = vec!;
let even_flat: = c!;
assert_eq!;
Comprehensions over Iterators
let vec: = vec!;
let output: = c!;
assert_eq!;
let vec: = vec!;
let output: = c!;
assert_eq!;
Function Application
let vec: = vec!;
let output: = c!;
assert_eq!;
let vec: = vec!;
let squares: = c!;
assert_eq!;
HashMap Comprehensions (Dictionary Comprehensions)
// simple hashmap comprehension
let squares_hashmap = c!;
// hashmap comprehension from an Iterator
// NOTE: we have to perform dereferencing: *key
let map = c!;
// conditional hashmap comprehension
let v: = vec!;
let map = c! ;
let mut expected: = new;
expected.insert;
expected.insert;
assert_eq!;
// conditional hashmap comprehension from an Iterator
// NOTE: we perform deferencing when using values
let map = c! ;
let mut e: = new;
e.insert;
assert_eq!;