将向量解析为数组字符串

Parsing Vector to Array String

我是 Rust 新手。

我试着写一个websocket客户端。

这是我的格式消息:

"[integer, "string", object]"

是否可以将所有值存储在 Vector 中,例如:

let msg: Vec<interface> = vec![123, "event", AnyObject{}];

如何将其转换为字符串,反之亦然。 提前致谢

从概念上讲,您想使用枚举。 Rust 中使用的枚举类型称为标记联合。从本质上讲,您可以将它们视为可以保存数据的枚举。

enum Interface {
    Int(i32),
    String(&'static str),
    Object(AnyObject),
    // etc
}

// You can then create a vec of different enum variants
let msg: Vec<Interface> = vec![Interface::Int(123), Interface::String("event"), Interface::Object(AnyObject{})];

假设您指的是JSON,那么推荐的解决方案是使用serde with serde_jsonserde_json 提供了一个 Value 枚举,您可以使用它来表示未知布局中的 JSON 数据。

// Copied from serde_json docs
enum Value {
    Null,
    Bool(bool),
    Number(Number),
    String(String),
    Array(Vec<Value>),
    Object(Map<String, Value>),
}

但是,您不需要直接使用 Value(除非您愿意),因为 serde_json 提供了一个宏,让您可以像 JSON 一样格式化代码,从而简化此操作].

use serde_json::{json, Value};

let msg: Value = json!([123, "event", {}]);

// You can then serialize a Value into JSON format
println!("{:?}", msg.to_string());
// Output: "[123,\"event\",{}]"

我建议通读 overview,因为它们有许多使用 JSON 的便捷方法。