013 Rust死灵书之类型转换
介绍
本系列录制的视频主要放在B站上Rust死灵书学习视频
Rust 死灵书相关的源码资料在https://github.com/anonymousGiga/Rustonomicon-Source
类型转换
考虑例子:
struct Foo {a: i32,b: i32,
}struct Bar {a: i32,b: i32,
}fn main() {let f = Foo{a: 1, b: 2};//let _b: Bar = f;let _b: Bar = Bar{a: f.a, b: f.b};//let _b: Bar = Bar{a: f.a, b: f.b};let b = unsafe {&*(&f as *const Foo as * const Bar) };println!("b = {:#?}", b);
}
说明:即使内部数据一样,也不能直接转换,如果要转换,则先转换成指针类型,然后在转换成目标指针类型,在解引用成目标类型。
强制类型转换
转换时,类型会被弱化,举一个例子:
&mut T 转换为 &T
特别注意的:在匹配 trait 的时候不会发生强制类型转换(receiver 除外,具体见下)。也就是说,如果为 U 实现了一个 trait,T 可以强制转换为 U,并不能认为 T 也实现了这个 trait。
trait Trait {}fn foo<X: Trait>(t: X) {}impl<'a> Trait for &'a i32 {}fn main() {let t: &mut i32 = &mut 0;foo(t);//此处报错,&mut i32转换成 i32,并不表示&mut i32页实现了Trait这个trait。
}
013 Rust死灵书之类型转换相关推荐
- 014 Rust死灵书之显式类型转换
介绍 本系列录制的视频主要放在B站上Rust死灵书学习视频 Rust 死灵书相关的源码资料在https://github.com/anonymousGiga/Rustonomicon-Source 知 ...
- 015 Rust死灵书之Transmutes转换
本系列录制的视频主要放在B站上Rust死灵书学习视频 Rust 死灵书相关的源码资料在https://github.com/anonymousGiga/Rustonomicon-Source 介绍 m ...
- 016 Rust死灵书之安全方式内存初始化
本系列录制的视频主要放在B站上Rust死灵书学习视频 Rust 死灵书相关的源码资料在https://github.com/anonymousGiga/Rustonomicon-Source 介绍 所 ...
- 020 Rust死灵书之展开
本系列录制的视频主要放在B站上Rust死灵书学习视频 Rust 死灵书相关的源码资料在https://github.com/anonymousGiga/Rustonomicon-Source Rust ...
- 025 Rust死灵书之原子操作
介绍 本系列录制的视频主要放在B站上Rust死灵书学习视频 Rust 死灵书相关的源码资料在https://github.com/anonymousGiga/Rustonomicon-Source 原 ...
- 026 Rust死灵书之实现Vec
介绍 本系列录制的视频主要放在B站上Rust死灵书学习视频 Rust 死灵书相关的源码资料在https://github.com/anonymousGiga/Rustonomicon-Source 从 ...
- 019 Rust死灵书之资源管理
本系列录制的视频主要放在B站上Rust死灵书学习视频 Rust 死灵书相关的源码资料在https://github.com/anonymousGiga/Rustonomicon-Source 基于所有 ...
- 024 Rust死灵书之Send和Sync
介绍 本系列录制的视频主要放在B站上Rust死灵书学习视频 Rust 死灵书相关的源码资料在https://github.com/anonymousGiga/Rustonomicon-Source S ...
- 008 Rust死灵书之生命周期
介绍 本系列录制的视频主要放在B站上Rust死灵书学习视频 Rust相关的源码资料在:https://github.com/anonymousGiga 笔记内容 今天我们跟大家聊一聊生命周期. 命周期 ...
最新文章
- IntPtr to bytes
- SQL SERVER中ROLLUP的用法
- 想从事分布式系统,计算,hadoop等方面,需要哪些基础,推荐哪些书籍?--转自知乎...
- 代码模板在哪里_C++的可变参数模板
- Nand Flash VS Nor Flash
- 技术分享 | CodeReview主要Review什么?
- 【Clickhouse】Clickhouse 集成kafka
- 二叉搜索树(排序二叉树)
- asp.net控件的Hyperlink控件
- 分享几款PR常用插件
- matlab分析系统灵敏度,matlab灵敏度分析函数
- 思维模型 时间管理矩阵
- 时间和天数相加并格式化
- Zedboard 运行linaro操作系统
- Entrepreneur\'s Credo of the American 美国的企业家宣言
- 硬盘柱面损坏怎么办_硬盘扇区损坏怎么办
- 如何解决苹果电脑(Macbook Pro)没有声音?
- 微信公众号开发:用从微信服务器下载图片资源
- 此图形驱动程序无法找到兼容的图形…
- Maven文件重命名