Rust 编程中的 From 和 Into 特性


FromInto 是 Rust 提供给我们的两个特性。它们在内部是相互关联的。

From 特性

当我们希望为一个特性定义如何从任何其他类型中创建自身时,我们使用 From 特性。它提供了一个非常简单的机制,我们可以用它在几种类型之间进行转换。

例如,我们可以轻松地将 str 转换为 String。

示例

考虑下面所示的示例

 实时演示

fn main() {
   let my_str = "hello";
   let my_string = String::from(my_str);
   println!("{}",my_string);
}

输出

hello

我们甚至可以转换我们自己的类型。

示例

考虑下面所示的示例

use std::convert::From;
#[derive(Debug)]
struct Num {
   value: i64,
}
impl From for Num {
   fn from(item: i64) -> Self {
      Num { value: item }
   }
}
fn main() {
   let num = Num::from(30);
   println!("My number is {:?}", num);
}

输出

My number is Num { value: 30 }

Into 特性

Into 特性完全是 From 特性的倒数,它通常需要对要转换成的类型进行说明,因为在大多数情况下,编译器无法判断这一点。

示例

考虑下面所示的示例

use std::convert::From;
#[derive(Debug)]
struct Num {
   value: i64,
}
impl From for Num {
   fn from(item: i64) -> Self {
      Num { value: item }
   }
}
fn main() {
   let int = 5;
   let num: Num = int.into();
   println!("My number is {:?}", num);
}

输出

My number is Num { value: 5 }

更新于: 03-Apr-2021

263 次观看

启动你的 职业

完成课程,获得认证

开始
广告