如何从 glib::Variant 与变体类型'ay'获取字符串值?



我有一个 gtk 应用程序的 rust 代码。args是一个glib::Variant.

gtk_app.connect_handle_local_options( move |_, args| {
match glib::VariantTy::new("ay") {
Ok(v) => {
if let Some(cfg) = args.lookup_value("config", Some(&v)) {
println!("ok {:?}", cfg);
if let Some(value) = cfg.get::<String>() {
println!("value {:?}", value);
}
}
}
Err(e) => {
println!("error {:?}", e);
}
}
}

变量cfg

Variant { ptr: 0x5571b47a6e10, type: VariantTy { inner: "ay" }, value: "b'/config.json'" }

如何获取字符串值?

ay是一个字节数组,而不是一个字符串。您可以通过以下方式获取该变体中包含的值作为Vec<u8>

let byte_array = variant.get::<Vec<u8>>().expect("not a byte array");

最新更新