当我尝试运行示例from the serde repository时:
#![feature(proc_macro)]
#[macro_use]
extern crate serde_derive;
extern crate serde_json;
#[derive(Serialize, Deserialize, Debug)]
struct Point {
x: i32,
y: i32,
}
fn main() {
let point = Point { x: 1, y: 2 };
// Convert the Point to a JSON string.
let serialized = serde_json::to_string(&point).unwrap();
// Prints serialized = {"x":1,"y":2}
println!("serialized = {}", serialized);
// Convert the JSON string back to a Point.
let deserialized: Point = serde_json::from_str(&serialized).unwrap();
// Prints deserialized = Point { x: 1, y: 2 }
println!("deserialized = {:?}", deserialized);
}
我收到错误:
错误:无法运行
rustc
以了解特定于目标的内容 信息引起:进程未成功退出:
rustc - --crate-name _ --print=file-names --crate-type bin --crate-type proc-macro --crate-type rlib --target x86_64-unknown-linux-gnu
(退出代码:101) --- stderr错误:未知的箱子类型:proc-macro
我的Rust版本是1.13.0,我的Cargo.toml有这些依赖项:
[dependencies]
serde = "*"
serde_derive = "*"
我应该使用其他依赖项还是额外配置?
答案 0 :(得分:0)
#![feature(...)]
属性表示使用尚未稳定的Rust功能的代码。在提出问题时,proc_macro
功能尚未稳定。 Serde需要此功能用于其#[derive(Serialize, Deserialize)]
宏。
自Rust 1.15起自定义派生已经稳定,因此问题中的代码(删除了feature属性)应该适用于任何Rust编译器,因为该版本。