【Rust】構造体でvalueから余計な項目(Null値)を取りたくないときは?

取得して処理する元の値(json)
Object {“currencySymbol”: Null, “id”: String(“likecoin”), “rateUsd”: String(“0.0009301600000000”), “symbol”: String(“LIKE”), “type”: String(“crypto”)}, Object {“currencySymbol”: String(“£”), “id”: String(“falkland-islands-pound”), “rateUsd”: String(“1.2207493203478160”), “symbol”: String(“FKP”), “type”: String(“fiat”)},….

構造体

#[derive(Debug, Serialize, Clone, Deserialize)]
struct Rate {
    id: String,
    symbol: String,
    currencySymbol: String,
    r#type: String,
    rateUsd: String,
}

これで、serde_json::from_valueで構造体Rateに入れようとすると

    let mut coins = get_price().await.unwrap();

    let objs: Vec<Rate> = serde_json::from_value(coins).unwrap();
    for obj in objs {
        println!("{:?}", &obj);
    }    

thread ‘main’ panicked at src/main.rs:17:57:
called `Result::unwrap()` on an `Err` value: Error(“invalid type: null, expected a string”, line: 0, column: 0)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

構造体ではcurrencySymbolをStringで定義しているが、一部の値でNullが含まれているためエラーになってしまう…

Nullを空文字に置換できないか、構造体でString or Nullみたいな書き方はできないか、 など色々試行錯誤したが、いっそのこと

#[derive(Debug, Serialize, Clone, Deserialize)]
struct Rate {
    id: String,
    symbol: String,
    // currencySymbol: String,
    r#type: String,
    rateUsd: String,
}

currencySymbol自体を取らないとしたら、
$ cargo run

Rate { id: “salvadoran-colón”, symbol: “SVC”, type: “fiat”, rateUsd: “0.1137841148955581” }
Rate { id: “saint-helena-pound”, symbol: “SHP”, type: “fiat”, rateUsd: “1.2207493203478160” }
Rate { id: “haitian-gourde”, symbol: “HTG”, type: “fiat”, rateUsd: “0.0076549269176472” }
Rate { id: “bermudan-dollar”, symbol: “BMD”, type: “fiat”, rateUsd: “1.0000000000000000” }
Rate { id: “turkmenistani-manat”, symbol: “TMT”, type: “fiat”, rateUsd: “0.2857142857142857” }
Rate { id: “litecoin”, symbol: “LTC”, type: “crypto”, rateUsd: “104.0104020958773373” }

あれ、できるやん。つまり、元データから構造体で定義したデータだけ引っこ抜くということが可能だとわかった。
元データと一致していないといけないと思ったんだが、、、 なんのこっちゃ