乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
Rust 07.00 指针
2023-02-05 10:10:59
36
0
0
admin
> 指针 引用用符号& 表示 解引用用* ```rust let a = 1; let b = &a; let c = *b; ``` ## 实现了deref trait 的“类型”可以被解引用 ```rust use std::ops::Deref; struct Obj { name:String, } impl Deref for Obj{ type Target = Obj; fn deref(&self) -> &Obj { &self } } fn main() { let a = Obj{name:"lala".to_string()}; println!("{}",(*a).name); } ``` > Deref 允许重载可变引用或不可变引用 到 不可变引用 DerefMut 允许重载不可变引用 到 不可变引用 ## Drop trait 会在类型被释放时触发 ```rust struct Obj { name:String, } impl Drop for Obj{ fn drop(&mut self) { println!("Drop {}",self.name); } } fn main() { let a = Obj{name:"lala".to_string()}; } ``` ## 使用提前丢弃值 ```rust use std::mem::drop; struct Obj { name:String, } impl Drop for Obj{ fn drop(&mut self) { println!("Drop {}",self.name); } } fn main() { let a = Obj{name:"lala".to_string()}; drop(a); //println!("Drop {}",self.name); 这句话会失败,因为已经释放了。 } ```
上一篇:
Rust 06.02 生命周期标注
下一篇:
Rust 07.01 智能指针Box
文档导航