【Rust】Mutex 使用示例
使用 std::sync::Mutex
可以多线程共享可变数据,Mutex
、RwLock
和原子类型,即使声明为 non-mut
,这些类型也可以修改:
1 | use std::borrow::Cow; |
使用 std::sync::Mutex
可以多线程共享可变数据,Mutex
、RwLock
和原子类型,即使声明为 non-mut
,这些类型也可以修改:
1 | use std::borrow::Cow; |
Double Free
使用 unsafe
特性构造指向同一块内存的两个变量,导致 Double Free
:
1 | use std::{mem, ptr}; |
Rust
中使用 std::result::Result
表示可能出错的操作,成功的时候是 Ok(T)
,而出错的时候则是 Err(E)
:
1 | pub enum Result<T, E> { |
通常情况下,E
是实现 std::error::Error
的错误类型:
1 | pub trait Error: Debug + Display { |
我们通常也需要在自己的代码中自定义错误,并且为之手动实现 std::error::Error
,这个工作很麻烦,所以就有了 thiserror
,自动帮我们生成实现的 std::error::Error
的代码。
而借助于 anyhow::Error
,和与之对应的 Result<T, anyhow::Error>
,等价于 anyhow::Result<T>
,我们可以使用 ?
在可能失败的函数中传播任何实现了 std::error::Error
的错误。
一直以来,从 JavaScript
,PHP
,Python
到Golang
,然后还有linux
系统中,无处不见正则表达式的身影,可是一致困扰在POSIX
和PCRE
的概念中,分不清这两个是个啥,今天就来翻翻正则表达式的老底,了解了解正则表达式的前世今生。
Regular Expression
的Regular
一般被译为正则、正规、常规。此处的Regular
即是规则的意思,Regular Expression
即描述某种规则的表达式之意。
正则表达式(英语:Regular Expression
,在代码中常简写为regex
、regexp
或RE
),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl
中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix
中的工具软件(例如sed
和grep
)普及开的。正则表达式通常缩写成regex
,单数有regexp
、regex
,复数有regexps
、regexes
、regexen
。