相关疑难解决方法(0)

为什么递归结构类型在Rust中是非法的?

我正在尝试随机的事情来加深我对Rust的理解.我刚用这段代码遇到以下错误:

struct Person {
    mother: Option<Person>,
    father: Option<Person>,
    partner: Option<Person>,
}

pub fn main() {
    let susan = Person {
        mother: None,
        father: None,
        partner: None,
    };

    let john = Person {
        mother: None,
        father: None,
        partner: Some(susan),
    };
}
Run Code Online (Sandbox Code Playgroud)

错误是:

error[E0072]: recursive type `Person` has infinite size
 --> src/main.rs:1:1
  |
1 | struct Person {
  | ^^^^^^^^^^^^^ recursive type has infinite size
2 |     mother: Option<Person>,
  |     ---------------------- recursive without indirection
3 |     father: Option<Person>,
  | …
Run Code Online (Sandbox Code Playgroud)

rust

51
推荐指数
3
解决办法
9699
查看次数

Rust&Serde JSON反序列化示例?

我试图弄清楚如何使用Serde将JSON反序列化为结构.例如,serde_json 自己的文档中的示例JSON 包含以下数据:

{
    "FirstName": "John",
    "LastName": "Doe",
    "Age": 43,
    "Address": {
        "Street": "Downing Street 10",
        "City": "London",
        "Country": "Great Britain"
    },
    "PhoneNumbers": [
        "+44 1234567",
        "+44 2345678"
    ]
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我们假设上面的数据是在变量"input"和下面的代码中:

let deserialized_data: Data = serde_json::from_str(input).unwrap();
Run Code Online (Sandbox Code Playgroud)

......结构应该是什么Data样的?

json rust json-deserialization serde

16
推荐指数
1
解决办法
6050
查看次数

标签 统计

rust ×2

json ×1

json-deserialization ×1

serde ×1