rust
文章平均质量分 73
砖厂码农
主要从事分布式架构和分布式数据库相关工作。大数据、机器学习、微服务、云原生、区块链均有所涉略。
展开
-
rust复习笔记5
构建命令行程序获取命令行参数的值,我们需要一个 Rust 标准库提供的函数,也就是std::env::args。当所需函数嵌套了多于一层模块时,通常将父模块引入作用域,而不是其自身。std::fs来处理文件获取环境变量的方法,env::var(环境变量名)标准库提供了eprintln!宏来打印到标准错误流闭包闭包的定义以一对竖线(|)开始,在竖线中指定闭包的参数...原创 2019-07-07 20:53:11 · 206 阅读 · 0 评论 -
rust复习笔记1
2015年rust1.0刚出来的时候,接触过一段时间的rust,并用rust重写过公司的场景模块管理(octree)。时隔三年rust日臻成熟,重拾rust。本文就当重新温习rust。rustcrust自带的编译工具。rustfmt 自动格式化工具!表示宏调用而不是普通函数cargorust构建系统和包管理器cargo.tml [dependencies] 添加 依赖库...原创 2019-07-01 00:27:00 · 437 阅读 · 0 评论 -
rust 复习笔记8
高级类型类型别名创建类型同义词从不返回的 !,这类函数称为发散函数动态大小类型的黄金规则:必须将动态大小类型的值置于某种指针之后。泛型函数默认只能用于在编译时已知大小的类型。然而可以使用如下特殊语法来放宽这个限制:fn generic<T: ?Sized>(t: &T) { // --snip-- }宏宏(Macro)指的是 Rust 中一系列的功能...原创 2019-07-14 01:21:18 · 128 阅读 · 0 评论 -
rust复习笔记4
泛型当使用泛型定义函数时,我们在函数签名中通常为参数和返回值指定数据类型的位置放置泛型。以这种方式编写的代码将更灵活并能向函数调用者提供更多功能,同时不引入重复代码。泛型可以用于结构体,枚举,结构体方法。结构体定义中的泛型类型参数并不总是与结构体方法签名中使用的泛型是同一类型。traittrait告诉 Rust 编译器某个特定类型拥有可能与其他类型共享的功能。可以通过 tr...原创 2019-07-04 01:02:43 · 137 阅读 · 0 评论 -
rust 复习笔记3
vectorvector的两种创建方式:let v: Vec<i32> = Vec::new();let v = vec![1, 2, 3];增加元素 push用索引或者get方法来访问vector中的项可以使用枚举在vector中存不同类型的数据字符串字符串不支持索引, 可用 chars() 方法遍历每个元素,用bytes()方法遍历原始字节。哈希...原创 2019-07-03 14:43:26 · 93 阅读 · 0 评论 -
rust复习笔记6
并发编程如下是将要涉及到的内容:如何创建线程来同时运行多段代码。 消息传递(Message passing)并发,其中通道(channel)被用来在线程间传递消息。 共享状态(Shared state)并发,其中多个线程可以访问同一片数据。 Sync和Sendtrait,他们允许 Rust 的并发保证能被扩展到用户定义的和标准库中提供的类型中。channel 允许多个放送者,...原创 2019-07-07 23:07:22 · 113 阅读 · 0 评论 -
rust复习笔记2
所有权所有权(系统)是 Rust 最为与众不同的特性,它让 Rust 无需垃圾回收(garbage collector)即可保障内存安全。所有运行的程序都必须管理其使用计算机内存的方式。一些语言中具有垃圾回收机制,在程序运行时不断地寻找不再使用的内存;在另一些语言中,程序员必须亲自分配和释放内存。Rust 则选择了第三种方式:通过所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查...原创 2019-07-02 00:23:11 · 239 阅读 · 0 评论 -
崩溃转储(rust)
# 崩溃转储## google breakpad### 使用breakpad不需要安装,使用方式为侵入式的,需要引入额外代码,可以作为外部库引入,也可以直接使用源码。breakpad 对进程(操作系统进程)有效,一次引入所有模块均有效。breakpad使用时需要提供库(或可执行文件)对应的 text-format symbol files(windows下为 .pdb文件,linux下为.s...原创 2018-03-30 12:00:06 · 1048 阅读 · 0 评论 -
八叉树设计(rust)
#松散八叉树设计方案##1.松散八叉树八叉树就是用在3D空间中的场景管理,可以很快地知道物体在3D场景中的位置,或侦测与其它物体是否有碰撞以及是否在可视范围内。松散八叉树不会出现物体跨界的情况,也不会出现很小的物体需要放到很大的节点之中的问题。 缺点:由于节点与节点之间相互重叠在一起,相对于经典八叉树来说,做视锥裁剪时,程序逻辑可能需要检查更多的节点。##2.[写时复制](htt...原创 2019-06-25 23:12:42 · 844 阅读 · 0 评论 -
rust复习笔记7
模式匹配近几年工作中大量使用erlang开发,除了天然支持分布式外,erlang的模式匹配最值得称道。其他语言golang,scala也提供模式匹配,总觉得表达不够丰富,用起来也别扭,当然有可能是与自己对这两门语言本身理解不深有关。直到遇到rust,才找回那种自由的感觉。模式是 Rust 中特殊的语法,它用来匹配类型中的结构,无论类型是简单还是复杂。结合使用模式和match表达式以及其他结...原创 2019-07-12 00:54:13 · 188 阅读 · 0 评论