🏠

rust

1 Rust 関係メモ

2 Value を持つ Tuple Struct を Serialize すると?

use serde::{Deserialize, Serialize};
use serde_json::{json, Value};

#[derive(Serialize)]
struct Object(Value);

fn main() {

    let v: Value = json!({"test":"hello"});

    let o: Object = Object(v);

    println!("{}", serde_json::to_string(&o).unwrap());
}

3 serdejson の Value の末端を swap する。

use serde_json::{json, to_value, Value};
use std::mem::swap;

fn main() {
    let mut object: Value = json!({"nested":{"data":"test", "other_data":"test"}});

    let path = "nested/data";
    let mut new_data = to_value("updated").unwrap();

    let mut current_data = &mut object;

    for p in path.split("/") {
        current_data = current_data.get_mut(p).unwrap();
        // this unwrap is dangerous
    }

    swap(current_data, &mut new_data);

    println!("{}", object.to_string());
}
{"nested":{"data":"updated","other_data":"test"}}

swap なので、そのノードの情報は消えちゃう。json object どうしだったら

4 iter を next してから、collect すると、前 pop になる

fn main() {
    let v = vec!["a", "b", "c"];
    let mut it = v.iter();
    println!("{:?}", it.next());
    let v: Vec<String> = it.map(|i| i.to_string()).collect();
    println!("{:?}", v);
}
Some("a")
["b", "c"] // 減ってる!

この後 for とかしたいときとか?

Date: 2021-02-21 21:27

Author: Yasushi Sakai

Created: 2021-03-11 Thu 07:12