
Rust
文章平均质量分 82
chirpyli
数据库内核开发工程师
展开
-
Rust编译`Couldn‘t resolve host name (Could not resolve host: crates)` 错误的解决办法
使用 nightly 版本时,Crates 源可能会出现 Couldn't resolve host name (Could not resolve host: crates) 错误(见 https://github.com/ustclug/discussions/issues/294)。一个临时的解决方法是在运行 cargo 的时候加入环境变量 CARGO_HTTP_MULTIPLEXING=false。Rust Crates 源使用帮助...原创 2020-11-30 10:40:52 · 7769 阅读 · 0 评论 -
Rust中的引用计数Arc与Rc
Rc单线程引用计数。不是线程安全的,如果需要线程间引用计数可用Arc。注意他们之间的实现区别。//! Single-threaded reference-counting pointers. 'Rc' stands for 'Reference//! Counted'.// This is repr(C) to future-proof against possible field-reordering, which// would interfere with otherwise safe [原创 2020-11-23 11:39:41 · 2812 阅读 · 4 评论 -
gRPC应用实例(Rust)
什么是 RPC ?RPC (Remote Procedure Call)即远程过程调用,是分布式系统常见的一种通信方法,已经有 40 多年历史。当两个物理分离的子系统需要建立逻辑上的关联时,RPC是牵线搭桥的常见技术手段之一。除 RPC 之外,常见的多系统数据交互方案还有分布式消息队列、HTTP请求调用、数据库和分布式缓存等。其中RPC和HTTP调用是没有经过中间件的,它们是端到端系统的直接数...原创 2018-07-05 14:31:21 · 5417 阅读 · 3 评论 -
【Rust】写时复制Cow
写时复制(Copy on Write)技术是一种程序中的优化策略,多应用于读多写少的场景。主要思想是创建对象的时候不立即进行复制,而是先引用(借用)原有对象进行大量的读操作,只有进行到少量的写操作的时候,才进行复制操作,将原有对象复制后再写入。这样的好处是在读多写少的场景下,减少了复制操作,提高了性能。Rust中对应这种思想的是智能指针Cow<T>,定义如下:pub enum Co...原创 2019-06-25 11:57:27 · 3402 阅读 · 0 评论 -
【Rust】双重循环break的问题
在单循环中使用break跳出循环,但如果遇到双重循环或者更多重循环时怎么办呢?与其他语言类似,Rust使用标记标识跳出指定循环。如下所示:fn main() { let a = vec![1;5]; let b = vec![2;6]; 'outer: for i in a { println!("{}", i); 'inner: for ...原创 2019-07-03 18:51:11 · 3072 阅读 · 0 评论 -
【Rust】生命周期bound用于泛型的引用
Rust通过生命周期参数注解引用来帮助编译器理解不同引用的生命周期如何相互联系。从而使编译器能够判断引用是否有效。本文介绍了对于泛型引用这种情况下生命周期的处理,即生命周期bound......原创 2017-10-17 10:12:06 · 1092 阅读 · 0 评论 -
【Rust】完全限定语法与消歧义:调用相同名称的方法
在存在调用相同名称方法时,重要的是告诉编译器你调用的是具体那个方法,下面通过示例程序说明具体用法......原创 2017-10-17 14:31:02 · 2058 阅读 · 0 评论 -
Rust中堆栈与并发
堆和栈对不同语言,堆和栈是相通的,只不过,这里是以Rust语言为例,来理解堆和栈。宏观上讲,这两个术语是关于内存管理的。栈和堆是帮助你决定何时分配和释放内存的抽象(概念)。首先先列出堆与栈的不同之处,没有列全:栈非常快速,是一段连续的地址空间,并且是 Rust 默认分配内存的地方。不过这个分配位于函数调用的本地,并有大小限制(最大容量是系统设定好的,一般为几MM{M}大小左右)。堆...原创 2018-02-09 13:32:17 · 3310 阅读 · 0 评论 -
【Rust】日志库log
日志是经常用的,Rust日志库实现了日志分级、日志过滤、日志输出格式化、日志回滚等功能。本文介绍了Rust log库的使用,并给出了几个常用日志库的使用实例......原创 2017-10-16 15:35:33 · 10916 阅读 · 0 评论 -
Rust中的const和static
const和static基本上每种语言都会涉及到,他们都相同的地方,也有不同的地方,比如他们都贯穿整个程序生命周期……const对于const,常量贯穿于整个程序的生命周期。更具体的,Rust 中的常量并没有固定的内存地址。这是因为实际上它们会被内联到用到它们的地方。为此对同一常量的引用并不能保证引用到相同的内存地址。const N: i32 = 5;//定义一个整型常量一个常量可...原创 2018-02-08 15:16:35 · 9095 阅读 · 0 评论 -
log4rs日志库简析
log4rs是rust实现的高度可配置日志库,该库配置的方式比较灵活,功能相对丰富,可以满足绝大部分的项目需要。本文给出了log4rs的用法示例与配置文件的说明,并简要叙述了log4rs的设计思路与组成......原创 2017-10-18 11:31:59 · 5921 阅读 · 0 评论