2 unstable releases
Uses old Rust 2015
0.2.0 | Apr 3, 2018 |
---|---|
0.1.0 | Jan 8, 2018 |
#20 in #cmp
95 downloads per month
8KB
128 lines
Sugar
Syntax sugar to make your Rust life more sweet.
Usage
use sugar::*;
Overview
use sugar::*;
// vec of boxed value
let vb1 = vec_box![1, 2, 3];
// list comprehension
let vb2 = c![Box::new(i), for i in 1..4];
// hashmap construction
let hm1 = hashmap!{
1 => 2,
2 => 3,
3 => 4,
};
// hashmap comprehension
let hm2 = c![i => i + 1, for i in 1..4];
let _ = max!(1, 2, 3);
let _ = min!(1, 2, 3);
if cmp!(1, < num, < 3) {
println!("hello world");
}
More detail in sugar's documentation.
lib.rs
:
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 fromvec_box
hashmap!
and related macros are reexported frommaplit
cratec!
list comprehension macro is reexported fromcute
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);
max!
andmin!
reexported frommin_max_macros
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);
Dependencies
~39KB