gpt4 book ai didi

rust - serde_json crate 中的 Value::into 方法有什么作用?

转载 作者:行者123 更新时间:2023-11-29 08:15:59 24 4
gpt4 key购买 nike

这段代码调用 val.into() 函数,其中 val 是一个 serde_json::Value 枚举,但我不能在 Rust 文档中找到任何关于 into 函数的描述。

pub fn parse(&self, s: &str) -> Result<RpcObject, ReadError> {
let val = serde_json::from_str::<Value>(&s)?;
if !val.is_object() {
Err(ReadError::NotObject)
} else {
Ok(val.into())
}
}

最佳答案

Into single method into 的特征. Into为每个实现 From 的类型实现:

impl<T, U> Into<U> for T
where
U: From<T>,

serde_json::Value 实现了许多不同版本的 From

impl From<i8> for Value
impl From<i16> for Value
impl From<i32> for Value
impl From<i64> for Value
impl From<isize> for Value
impl From<u8> for Value
impl From<u16> for Value
impl From<u32> for Value
impl From<u64> for Value
impl From<usize> for Value
impl From<f32> for Value
impl From<f64> for Value
impl From<bool> for Value
impl From<String> for Value
impl<'a> From<&'a str> for Value
impl<'a> From<Cow<'a, str>> for Value
impl From<Map<String, Value>> for Value
impl<T: Into<Value>> From<Vec<T>> for Value
impl<'a, T: Clone + Into<Value>> From<&'a [T]> for Value

这两个特征用于提供不能失败的类型之间的转换。性状 TryFrom TryInto 从 Rust 1.34 开始允许错误的转换。

另见:


精明的读者会注意到,我上面显示的内容实际上允许您将转换为 serde_json::Value .从技术上讲,原始代码转换为 RpcObject 来自 Value .在您的代码中某处有 impl From<serde_json::Value> for RpcObject ,但由于未提供该实现,因此我无法链接到任何有用的文档,但模式是相同的。

关于rust - serde_json crate 中的 Value::into 方法有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49304346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com