Merge branch 'sunface:main' into main

pull/1126/head
Rustln 2 years ago committed by GitHub
commit 56b63006d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -61,7 +61,7 @@
- [KV 存储 HashMap](basic/collections/hashmap.md)
- [类型转换](basic/converse.md)
- [返回值和错误处理](basic/result-error/intro.md)
- [panic 深入剖析!](basic/result-error/panic.md)
- [panic! 深入剖析](basic/result-error/panic.md)
- [返回值 Result 和?](basic/result-error/result.md)
- [包和模块](basic/crate-module/intro.md)
- [包 Crate](basic/crate-module/crate.md)

@ -474,7 +474,7 @@ help: consider using one of the available lifetimes here
| +++++++++
```
不得不说Rust 编译器真的很强大,还贴心的给我们提示了该如何修改,虽然。。。好像。。。。它的提示貌似不太准确。这里我们更希望参数和返回值都是 `'a` 命周期。
不得不说Rust 编译器真的很强大,还贴心的给我们提示了该如何修改,虽然。。。好像。。。。它的提示貌似不太准确。这里我们更希望参数和返回值都是 `'a` 命周期。
## 方法中的生命周期

@ -320,7 +320,10 @@ unsafe fn shorten_invariant_lifetime<'b, 'c>(r: &'b mut R<'static>) -> &'b mut R
以上例子非常先进!但是是非常不安全的 Rust 行为!
## 课后练习
> Rust By Practice支持代码在线编辑和运行并提供详细的习题解答。(本节暂无习题解答)
> Rust By Practice支持代码在线编辑和运行并提供详细的习题解答。
> - [as](https://zh.practice.rs/type-conversions/as.html)
> - [习题解答](https://github.com/sunface/rust-by-practice/blob/master/solutions/type-conversions/as.md)
> - [From/Into](https://zh.practice.rs/type-conversions/from-into.html)
> - [习题解答](https://github.com/sunface/rust-by-practice/blob/master/solutions/type-conversions/from-into.md)
> - [其它转换](https://zh.practice.rs/type-conversions/others.html)
> - [习题解答](https://github.com/sunface/rust-by-practice/blob/master/solutions/type-conversions/others.md)

@ -253,11 +253,11 @@ fn main() {
接下来,让我们一起来看看 Rust 中有哪些格式化参数。
#### 宽度
### 宽度
宽度用来指示输出目标的长度,如果长度不够,则进行填充和对齐:
##### 字符串填充
#### 字符串填充
字符串格式化默认使用空格进行填充,并且进行左对齐。
@ -280,7 +280,7 @@ fn main() {
}
```
##### 数字填充:符号和 0
#### 数字填充:符号和 0
数字格式化默认也是使用空格进行填充,但与字符串左对齐不同的是,数字是右对齐。
@ -297,7 +297,7 @@ fn main() {
}
```
##### 对齐
### 对齐
```rust
fn main() {
@ -315,7 +315,7 @@ fn main() {
}
```
#### 精度
### 精度
精度可以用于控制浮点数的精度或者字符串的长度
@ -339,7 +339,7 @@ fn main() {
}
```
#### 进制
### 进制
可以使用 `#` 号来控制数字的进制输出:
@ -370,7 +370,7 @@ fn main() {
}
```
#### 指数
### 指数
```rust
fn main() {
@ -379,14 +379,14 @@ fn main() {
}
```
#### 指针地址
### 指针地址
```rust
let v= vec![1, 2, 3];
println!("{:p}", v.as_ptr()) // => 0x600002324050
```
#### 转义
### 转义
有时需要输出 `{`和`}`,但这两个字符是特殊字符,需要进行转义:

@ -422,7 +422,7 @@ fn main() {
当然,解决办法还是有的,要不怎么说 Rust 是极其强大灵活的编程语言Rust 提供了一个特征叫 [`Deref`](https://course.rs/advance/smart-pointer/deref.html),实现该特征后,可以自动做一层类似类型转换的操作,可以将 `Wrapper` 变成 `Vec<String>` 来使用。这样就会像直接使用数组那样去使用 `Wrapper`,而无需为每一个操作都添加上 `self.0`
同时,如果不想 `Wrapper`底层数组的所有方法,我们还可以为 `Wrapper` 去重载这些方法,实现隐藏的目的。
同时,如果不想 `Wrapper`底层数组的所有方法,我们还可以为 `Wrapper` 去重载这些方法,实现隐藏的目的。
## 课后练习

@ -68,7 +68,7 @@
大家知道可观测性现在为什么很多人搞不清楚吗?就是因为你怎么做都可以,比如之前的存储,就有很多解决方案,而且还都不错。
对于数据展示也是,你可以使用上面的 `jaeger`、`promethes` 自带的 UI也可以使用 `grafana` 这种统一性的 UI而从我个人来说更推荐使用 `grafana`,毕竟 UI 的统一性和内联性对于监控数据的查询是非常重要的。
对于数据展示也是,你可以使用上面的 `jaeger`、`prometheus` 自带的 UI也可以使用 `grafana` 这种统一性的 UI而从我个人来说更推荐使用 `grafana`,毕竟 UI 的统一性和内联性对于监控数据的查询是非常重要的。
再说了,`grafana` 的 UI 做的好看啊,没人能拒绝美好的事物吧 :D

Loading…
Cancel
Save