将 gst::Structure 的列表从 rust gstreamer 插件发送到 c++

Sending a list of gst::Structure from rust gstreamer plugin to c++

我正在使用 Rust 开发一个 GStreamer 插件。我想将一组对象从 Rust 发送回 C++。每个对象都有两个字段。 wordconfidence。我试过这段代码。但它没有编译。只要 text,我就可以发送 structure。但是当我想添加words时,我根本无法编译它。

let v = vec![];
for word in transcript.words {
    v.push(gst::Structure::new("word-info",
    &[("word", &word.word), ("confidence", &word.confidence)]));
}

let structure = gst::Structure::new(
    "result",
    &[
        ("text", &transcript.text),
        ("words", &gst::Array::from(&v[..]))
    ],
);

element
    .emit_by_name("new-transcript", &[&structure])
    .unwrap();

所以我想发回structure。它有两个字段。 textwordswords 是(单词,置信度)对的列表。

只需要稍作改动。我必须将 SendValue 的向量发送到 gst::Array::from_owned

let v = vec![];
for word in transcript.words {
    v.push(gst::Structure::new("word-info",
    &[("word", &word.word), ("confidence", &word.confidence)]).to_send_value());
}

let structure = gst::Structure::new(
    "result",
    &[
        ("text", &transcript.text),
        ("words", &gst::Array::from_owned(&v[..]))
    ],
);

element
    .emit_by_name("new-transcript", &[&structure])
    .unwrap();