[][src]Crate extdot

A set of macros for using the extended dot operator.

Examples

In areas where expression syntax is needed.

fn main() {
    extdot::expr!{
        let v: i32 = -5;

        let v_abs = v.[it.abs()];
        let v_pow = v.[it.pow(2)];

    }
}
use serde::Deserialize;
use std::{ fs::File, path::Path };

#[derive(Debug, Deserialize)]
struct Point {
  x: i32,
  y: i32
}

fn main() -> Result<(), Box<std::error::Error>>{
    extdot::expr!{
        let point: Point =
          Path::new("tests/data/point.json")
          .[File::open]?
          .[serde_json::from_reader]?;


        Ok(())
    }
}
extdot::expr!{
    let map = std::collections::HashMap::new().[
        it.insert("key1", 13),
        it.insert("key2", 17),
    ];

}

In areas where item syntax is needed.

use std::fmt;

struct Example {}

extdot::item!{
  impl fmt::Display for Example {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
       let v: i32 = -7;

       let v_abs = v.[it.abs()];
       let v_pow = v.[it.pow(2)];

       write!(f, "({}, {})", v_abs, v_pow)
    }
  }
}

fn main() {
    println!("{}", Example {});
}

Re-exports

pub use extdot_impl::item;

Macros

expr

Allows the use of the extended dot notation in expressions.