[][src]Crate iter_python

iter-python

Python generator expressions (iter!) and "list" comprehensions (vec_it!)

Repository Latest version Documentation License

Usage

  1. Add the following line to your Cargo.toml, under [dependencies]:

    iter-python = "0.9.0"
    
  2. Bring iter! and (enhanced) vec! into scope in you Rust code with:

    use ::iter_python::{iter, vec_it as vec};

Example

//! Run with `cargo run --example readme`

use ::iter_python::{
    iter,           // "generator expressions"
    vec_it as vec,  // "list comprehensions"
};

fn main ()
{
    use ::itertools::Itertools; // .join() method

    let s = iter!(
        format!("{}!", s),
        for s in " Hello World ".split_whitespace(),
        if !s.is_empty()
    ).join("\n");
    dbg!(&s);
    assert_eq!(
        s,
        "Hello!\nWorld!",
    );

    let v = vec![
        x,
        for &x_opt in &[None, Some(42), None],
        if let Some(x) = x_opt
    ];
    dbg!(&v);
    assert_eq!(
        v,
        vec![42],  // classic vec! macro is still there
    );
}

See iter! and vec_it! for more examples.

Macros

iter

Write the most pervasive iterator adapters (filtering and mapping) as Python generator expressions.

vec_it

Python "list" comprehensions: same as iter!, but collected into a Vec instead.