7.rust类型转换与迭代器详解

一、前言

上一篇文章中,介绍了rust中强大的trait,因此本文就来使用一下这些常用的、且需要自己手动实现的trait来完成一些功能,也就是类型转换与迭代器。

首先我们从较为复杂的类型转换讲起。

rust相比于C/C++,最让人惊艳的便是它的自动类型推导,比如当你写下面这条语句时:

let a=10;

rust编译器将能够自动推导出a的类型为i32,因为字面量10的值就是i32。

当然,这个特性在C/C++中可以使用auto关键字实现,包括本文要介绍的类型转换,C/C++同样也可以实现、甚至可能更加方便(比如强制转换?)。

但rust能够通过人为指定返回值类型来推断函数返回值类型在C/C++中却是无法实现的(也就是本文要介绍的功能)。

包括rust提供了安全性保证、其类型相当直观、即使是枚举类型也能实现方法进行任意类型转换,加上其简练优雅的语法,在体验上C/C++真的很难与之相比。

二、基本理解

类型转换在我的感知中,最实用的一个功能其实是枚举类型:

enum Test {
    One,
    Two,
    Three,
}

比如上面这个枚举类型,当我们想要将其作为字符串输出时,一般可能就得这样做:

fn main() {
    let v = Test::One;
    let str = match v {
        Test::One => "One",
        Test::Two => "Two",
        Test::Three => "Three",
    };
    println!("{}", str);
}

这样做当然是可以的,只不过不够简练优雅。

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux