抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

rust程序冲突tips

rust程序冲突tips对这篇文章的二次加工和翻译。 问题我们想要将程序的部分功能抽象成一个”管理者”。 于是我们会构造一个结构体, 它内部有一系列”被管理元素”和一些状态元素。如: 12345678910111213141516use std::sync::mpsc::Sender;struct MyStruct { widgets: Vec<MyWidget>, ...

rust中智能指针box的简单实现

rust中智能指针box的简单实现Abstractbox是rust中最基本的一种智能指针, 所谓智能能自动解引用自动释放。这三个基本功能分别是通过实现Deref, DerefMut, Drop三个trait赋能的。 Deref和DerefMut实现了智能指针的自动解引用。简单的说是自动解引用直到类型匹配(如果一路都满足Deref trait),即如果需要的类型是&T而得到的类型是Bo...

用C的方式理解rust

Preface作为一个母语是c程序员,初见rust时很多改变是比较模糊的,c中的指针等在rust中似乎变得更加抽象难以理解了。所以打算用类比的方式,让c程序员更好的理解rust。 1234567891011121314151617// 基于引用创建裸指针let mut num = 5;let r1 = &num as *const i32;let r2 = &mut num ...

rust小炒

Overviewrust中的一些技巧 tips引用与借用的区别创建引用的行为称为借用(borrowing) 裸指针和引用的相互转换引用可以隐式或显式地转换为裸指针 显式: let a: *const i32 = &b as *const i32; 隐式: let a: *cosnt i32 = &b; 1234567// Explicit cast:let i: u32 ...

rust杂项

AbstractPrefaceOverview NonNull<T> 创建的时候使用*mut T创建: NonNull::new(*mut T) 假设说包裹的指针非空 mem::forget() 小工具火焰图12$ cargo install flamegraph$ cargo framegraph 查看asm输出rust和对应汇编代码 12$ cargo instal...