Crate sugar

Source
Expand description

Syntax sugar to make your Rust life more sweet.

§Usage

use sugar::*;

§Sugars

§Collections construct

use sugar::*;

// vec construction
let v = vec![1, 2, 3];

// vec of boxed value
let vb = vec_box![1, 2, 3];

// hashmap construction
let hm = hashmap!{
    1 => 2,
    2 => 3,
    3 => 4,
};

// list comprehension
let vb2 = c![Box::new(i), for i in 1..4];
assert_eq!(vb, vb2);

// hashmap comprehension
let hm2 = c![i => i + 1, for i in 1..4];
assert_eq!(hm, hm2);
  • vec_box! is reexported from vec_box
  • hashmap! and related macros are reexported from maplit crate
  • c! list comprehension macro is reexported from cute crate

§Hashmap: clone a value of speical key.

use sugar::*;

let hm = hashmap! {
    1 => "1".to_owned(),
    2 => "2".to_owned(),
};

let s = {
    hm.get_clone(&1)
};

assert_eq!(s.unwrap(), "1".to_owned());

§Result: ignore Result’s OK value

use sugar::SResultExt;

fn do_work1() -> Result<i32, String> {
    Ok(1)
}

fn do_work2() -> Result<(), String> {
    // I don't care about the result's Ok value
    do_work1()
        .drop_value()
}

do_work2();

§max! and min! macros

use sugar::*;

assert_eq!(max!(3, 1, 2, 7, 0), 7);
assert_eq!(min!(3, 1, 2, 7, 0), 0);

§Chained comparison

use sugar::*;

fn return_2() -> i32 {
    return 2;
}

assert_eq!(cmp!(1, < 2, < 3), true);
assert_eq!(cmp!(1, <= 2, <= 3), true);
assert_eq!(cmp!(1, <= 2, <= 3, != 4), true);

// return_2 will not be called
assert_eq!(cmp!(2, < 1, < 3, < return_2()), false);

// return_2 will be called once
assert_eq!(cmp!(1, < return_2(), <= 2), true);

Macros§

btreemap
Create a BTreeMap from a list of key-value pairs
btreeset
Create a BTreeSet from a list of elements.
c
cmp
convert_args
Macro that converts the keys or key-value pairs passed to another maplit macro. The default conversion is to use the Into trait, if no custom conversion is passed.
hashmap
Create a HashMap from a list of key-value pairs
hashset
Create a HashSet from a list of elements.
max
Returns the highest value (Ord) of the passed parameters.
max_f
Returns the highest value (f64) of the passed parameters.
min
Returns the lowest value (Ord) of the passed parameters.
min_f
Returns the lowest value (f64) of the passed parameters.
vec_box

Traits§

SHashMapExt
SResultExt

Functions§

max_f64
f(x, y) form of f64’s x.max(y) Used in max_f!
min_f64
f(x, y) form of f64’s x.min(y) Used in min_f!