3.type关键字.rs

/*
你可以使用 type 关键字声明另一类型的别名(用法和C++一样一样的)
类型别名:type aliases
type Name = String;

type 也可以用来声明trait的关联类型,详细请看“特性trait”章节

更多详细信息请看:
https://github.com/rooat/RustLearn/blob/master/src/ch19-04-advanced-types.md
*/

fn test_1() {
     type Name = String;
     let x: Name = "Hello".to_string();
     println!("{}", x);
}

//但是请注意,这是一个别名,不完全是一个新类型。换句话说,因为 Rust 是强类型的,所以你不能比较两个不同类型
fn test_2() {
     type Name1 = i32;
     type Name2 = i32;
     let x1: Name1 = 36;
     let x2: Name2 = 34;
     if x1 == x2 {
          println!("same value");
     } else {
          println!("not same value");
     }
}

/*
你还可以使用泛型类型别名:
use std::result;
enum ConcreteError {
Foo,
Bar,
}
type Result<T> = result::Result<T, ConcreteError>;
这将创建一个 Result 类型的专门的版本 ,它总是有一个针对 Result< T E > 的 E 部分的 ConcreteError 。
这常被用在标准库来为每一部分创建自定义错误。例如,io::Result 。
*/
fn test_3() {
     use std::result;
     enum ConcreteError {
          Foo,
          Bar,
     }
     type Result<T> = result::Result<T, ConcreteError>;
}

fn main() {
     test_1();
     test_2();
     test_3();
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值