Попытка cargo build
против этого кода:
#![allow(unused)]
use serde::{Deserialize, Serialize};
use serde_json::{Result, Value};
#[derive(Serialize, Deserialize,Debug)]
struct Repository{
r#type: String,
url: String,
}
fn main() {
println!("Hello, world!");
}
А вот и машина go .toml file:
[package]
name = "demo_err"
version = "0.1.0"
authors = ["Onorio Catenacci <catenacci@ieee.org>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
serde = "1.0.104"
serde_json = "1.0.44"
Конечно, мой реальный код немного больше, но это самый маленький кусочек кода, с помощью которого я могу воспроизвести ошибку.
Я получаю следующие ошибки:
Compiling demo_err v0.1.0 (U:\skunkworks\rust\demo_err)
error: cannot find derive macro `Serialize` in this scope
--> src\main.rs:9:10
|
9 | #[derive(Serialize, Deserialize,Debug)]
| ^^^^^^^^^
error: cannot find derive macro `Deserialize` in this scope
--> src\main.rs:9:21
|
9 | #[derive(Serialize, Deserialize,Debug)]
| ^^^^^^^^^^^
Теперь я могу предположить, что сделал что-то не так - за исключением этого образец кода от serde_ json. Это так:
use serde::{Deserialize, Serialize};
use serde_json::Result;
#[derive(Serialize, Deserialize)]
struct Person {
name: String,
age: u8,
phones: Vec<String>,
}
Теперь, одно очевидное отличие - r#type
, но использование другого имени не исправляет ошибку. Другое очевидное отличие - serde_json::{Result, Value}
, но удаление Value
также не исправляет ошибку.
Очевидно, что что-то отличается между моим кодом и этим образцом, но я не могу понять, в чем дело. Может кто-нибудь, пожалуйста, укажите мне правильное направление?