我试图获取non-document
bson对象值的字节数组:
尝试此操作时:
let value: bson::Bson = bson::Bson::String(String::from("heya"));
bson::to_vec(&value).unwrap();
然后产生这个错误:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: SerializationError { message: "attempted to encode a non-document type at the top level: String" }', ****\src\**\mod.rs:83:43
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
……我没有文档,文档不清楚这是不能做到的,也不清楚如何实现这一点。
1条答案
按热度按时间dldeef671#
在文档之外,将字符串序列化为BSON意味着什么并不明显。通常,BSON会按顺序存储以下数据:
\0
\0
所以如果你只想要值,那就是字符串本身。如果您想要值加上空结束符,则是前一部分加上空字节。如果你想要长度、值和空结束符,那么就是长度(包括空字节),然后是前面的所有部分。你可以在
bson
中看到这个。这些都不是有效的BSON,因为它们不包含在文档中,甚至不包括键或类型,因此它们的实用性有限。bson
crate没有公开这个功能,所以你必须在自己的代码中复制/编写它。不过,它们相当简单。如果你想得到有效的BSON,你可以把它放在一个简单的文档中: