2 个版本

使用旧Rust 2015

0.2.2 2018年5月17日
0.2.1 2018年5月17日

#2125数据结构

MIT 许可证

19KB
450

sac

一个Rust宏,可以构建任何实现FromIterator的集合的实例。

Cargo.toml

[dependencies]
sac = "0.2"

main.rs

#[macro_use]
extern crate sac;

fn main() {
    let vec: Vec<_> = sac![1, 2, 3, 4];
    assert_eq!(vec, vec![1, 2, 3, 4]);
}

如果编译器可以推断类型,则不需要类型注解

struct VecWrapper(Vec<i32>);

let container = VecWrapper(sac![1, 2, 3, 4]);

也支持尾随逗号

let vec: Vec<_> = sac![
    1,
    2,
    3,
    4,
];

assert_eq!(vec, vec![1, 2, 3, 4]);

该宏还可以使用类似结构的语法构建映射(例如 HashMap

use std::collections::HashMap;

let map_with_syntax_sugar: HashMap<_, _> = sac! {
    "foo": "bar",
    "marco": "polo",
};

let map_without_syntax_sugar: HashMap<_, _> = sac! [
    ("foo", "bar"),
    ("marco", "polo"),
];

assert_eq!(map_with_syntax_sugar, map_without_syntax_sugar);

可以使用变量作为键和值

use std::collections::HashMap;

let key = "foo";
let value = "bar";

let map: HashMap<_, _> = sac! {
    key: value,
};

assert_eq!(map, sac! { "foo": "bar" });

要使用表达式作为键,请将它们用括号或花括号括起来

use std::collections::HashMap;

let map: HashMap<_, _> = sac! {
    (1 + 1): "two",
    {2i32.pow(2)}: "four",
};

assert_eq!(map, sac! { 2: "two", 4: "four" });

许可证:MIT

无运行时依赖项