serde_json crate 中的 Value::into 方法有什么作用?
What does the Value::into method from the serde_json crate do?
这段代码调用了 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
is a trait with the single method into
. Into
is implemented for every type that implements 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
and TryInto
允许从 Rust 1.34 开始的易错转换。
另请参阅:
精明的 reader 会注意到我上面显示的内容实际上允许您将 转换为 和 serde_json::Value
。从技术上讲,原始代码从 转换为 RpcObject
Value
。在您的代码中某处有 impl From<serde_json::Value> for RpcObject
,但由于未提供该实现,因此我无法 link 找到任何有用的文档,但模式是相同的。
这段代码调用了 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
is a trait with the single method into
. Into
is implemented for every type that implements 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
and TryInto
允许从 Rust 1.34 开始的易错转换。
另请参阅:
精明的 reader 会注意到我上面显示的内容实际上允许您将 转换为 和 serde_json::Value
。从技术上讲,原始代码从 转换为 RpcObject
Value
。在您的代码中某处有 impl From<serde_json::Value> for RpcObject
,但由于未提供该实现,因此我无法 link 找到任何有用的文档,但模式是相同的。