【Rust】From 和 Into


环境

  • Rust 1.56.0
  • VSCode 1.60.2

概念

参考:https://doc.rust-lang.org/stable/rust-by-example/conversion/from_into.html

基础类型可以通过 as 关键字进行转换,如果是自定义类型,则通过 From 和 Into 进行转换。
这两个是 trait,可以理解为其它编程语言中的接口,他们是相关联的。

示例

From

use std::convert::From;

#[derive(Debug)]
struct Number {
    value: i32,
}

impl From<i32> for Number {
    fn from(item: i32) -> Self {
        Number { value: item }
    }
}

fn main() {
    let num = Number::from(30);
    println!("My number is {:?}", num);
}

Into

如果实现了 From,则自动获得了 Into,不过需要手动指明类型。

use std::convert::From;

#[derive(Debug)]
struct Number {
    value: i32,
}

impl From<i32> for Number {
    fn from(item: i32) -> Self {
        Number { value: item }
    }
}

fn main() {
    let int = 5;
    let num: Number = int.into();
    println!("My number is {:?}", num);
}

总结

了解了 Rust 中的 From 和 Into trait,用来进行自定义类型转换。

附录


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM