У меня есть содержимое JSON, в котором, глубоко вложенный, есть массив чисел, который я хочу извлечь. Я бы не хотел создавать промежуточные структуры, поэтому попробовал следующее:
... get f
let json = serde_json::from_reader::<_, serde_json::Value>(f)?;
let xs: Vec<(f64, f64)> = serde_json::from_value(json["subtree"][0])?;
Это жалуется на
11 | serde_json::from_value(json["subtree"][0])?;
| ^^^^^^^^^^^^^^^^^^^^^ move occurs because value has type `serde_json::value::Value`, which does not implement the `Copy` trait
Если я clone
, все работает нормально:
let xs: Vec<(f64, f64)> = serde_json::from_value(json["subtree"][0].clone())?;
Но это кажется ненужным. Я не буду использовать остальную часть структуры. Как добиться этого без создания промежуточных структур и без клонирования?