首页 > 其他分享 >Rust 标准库

Rust 标准库

时间:2022-09-03 22:56:59浏览次数:52  
标签:mut string Collection Rust 标准 iter impl split

1.One-Liners

1.strings

// 1. 拼接字符串
format!("{x}{y}")

// 2.显示Display
write!(x, "{y}")

// 3. 分隔符分开string,s.split(pattern)
s.split("abc");
s.split('/');
s.split(char::is_numeric());
s.slit_whitespace();
s.lines(); // 换行区分
Regex::new(r"\s")?.split("one two three");

2 I/O

// 1.创建文件
File::create(PATH)?

// 也可以
OpenOptions::new().create(true).write(true).truncate(true).optn(PATH)?

3 Macros

macro_rule! var_args {
  ($($args:expr), *) => {{{}}}
}

// 使用args参数,调用f多次
$(f($args);)*

4 Esoterics

// 1.闭包
wants_closure({
  let c = outer.clone;
  move || use_clone(c)
})

// try cloure
iter.try_for_each(|x| { OK::<(), Error>(())})?;


// 如果T是Copy的,迭代和修改&mut [T]
Cell::from_mut(mut_slice).as_slice_of_cells()

// 用长度获取subslice
&original_slice[offset..][..length]

// Canary确保 T 对象安全
const _: Option<&dyn T> = None;

2.线程安全

实现T:Send可以移动到另一个线程,T:Sync可共享

例子 Send* !Send
Sync* Most types ... Arc, Mutex MutexGuard, RwLockReadGuard
!Sync Cell,RefCell Rc, &dyn Trait, *const T, *mut T

3.迭代器

3.1获取迭代器

基本使用
假设有一个c 集合类型为C

  • c.into_iter(),需要C类型实现IntoIterator trait 消耗c
  • c.iter() 借用,不消耗
  • c.iter_mut()可变借用

迭代器

  • i.next() 返回Some(x),c的下一个元素或者None

loops

  • for x in c {} 语法糖调用c.into_iter() 知道None

3.2 实现迭代器

基础,假设struct Collection<T> {}

  • struct IntoIter<T> {}
  • impl Iterator for IntoIter {} 实现Iterator::next()

共享和可变

  • struct Iter<T> {} impl Iterator for Iter<T> {}
  • struct IterMut<T> {} , impl Iterator for IterMut<T> {}

增加方法

Collection::iter(&self) -> Iter
Collection::iter_mut(&mut self) -> IterMut

loops可以工作

  • impl IntoIterator for Collection {} — Now for x in c {} works.
  • impl IntoIterator for &Collection {} — Now for x in &c {} works.
  • impl IntoIterator for &mut Collection {} — Now for x in &mut c {} works.

4.数字转换

↓ Have / Want → u8 … i128 f32 / f64 String
u8 … i128 u8::try_from(x)? x as f32 x.to_string()
f32 / f64 x as u8 x as f32 x.to_string()
String x.parse::()? x.parse::()? x

5.string转换

6.string输出

标签:mut,string,Collection,Rust,标准,iter,impl,split
From: https://www.cnblogs.com/ellabrain/p/16653887.html

相关文章

  • C语言:标准IO
    标准I/OC语言标准I/O有许多专门的函数简化了处理不同I/O的问题。例如,printf()把不同形式的数据转换成与终端相适应的字符串输出。第二,输入和输出都是缓冲的也就是说,一次转......
  • 最新资讯丨2022年08月04日,IEC60884-1:2022 《家用和类似用途插头插座第1部分:通用要求
    ♦新标准介绍IEC60884-1:2022《Plugsandsocket-outletsforhouseholdandsimilarpurposes-Part1:Generalrequirements》已于2022年08月04日正式发布。本第四......
  • 使用 Rust 开发原生 iOS 游戏
    使用Rust开发原生iOS游戏我记录了使用纯Rust探索跨平台游戏开发的旅程。严重地。我不解决。100%生锈或破产!为什么我选择Rust当谈到性能和模块化设计时,Rust......
  • <Perl>标准输入输出
    ■标准输入在Perl中标准输入是<STDIN>,它会读取一行输入直到遇到换行符号,如果你不想读入换行符号,你可以使用chomp操作符去掉换行符号chomp($line=<STDIN>);print"$......
  • Rust 从入门到精通06-语句和表达式
    1、语句和表达式语句和表达式是Rust语言实现逻辑控制的基本单元。在Rust程序里面,语句(Statement)是执行一些操作但不返回的指令,表达式(Expressions)计算并产生一个值。表......
  • 16个EMC设计标准电路
    来源:https://mp.ofweek.com/gongkong/a4456939256261、AV接口EMC设计标准电路2、AC110V-220VEMC设计标准电路3、CAN接口EMC设计标准电路4、DC24V接口EMC设计标准电路......
  • 澳大利亚市场家电标准准入最新动态!
    澳大利亚标准委员会与2022年6月24日发布了一系列新版标准。其中,AS/NZS60335.1:2022应在IEC60335-1第六版对应的分标发布之后使用。 此外,澳大利亚标准委员会发布的标......
  • 【C标准库】详解fopen函数 一篇让你搞懂fopen函数
    创作不易,感谢支持!fopen函数头文件:stdio.h功能是打开一个文件,其声明格式是:FILE*fopen(constchar*filename,constchar*mode);文件指针名=fopen(文件名,使用文......
  • 河北稳控科技使用标准信号检测 VM振弦采集模块测量精度
    河北稳控科技使用标准信号检测VM振弦采集模块测量精度(一) (1)电源1.1VDD引脚电源必须使用LDO稳压或者低纹波线性电源,LDO推荐使用AM1117_3.3V芯片,测试时发现SPX......
  • 2.标准化工作及性能指标
    标准化工作及其相关组织标准化工作标准化是计算机网络十分重要的一部分,是实现软件与硬件的相互联通的前提,没有一个统一的便准,各个厂家所开发的应用无法有效沟通。标准的......