首页   注册   登录
 quinoa42 最近的时间轴更新
ONLINE

quinoa42

V2EX 第 200961 号会员,加入于 2016-11-12 11:25:14 +08:00
今日活跃度排名 12786
quinoa42 最近回复了
bash 怎么不系统化了,代码是自己写的,而且一般来讲无论什么发行版都会自带 bash
我之前用的 dotbot,但考虑到不是所有发行版都自带 python,最后还是手写了自己的 bash script
3 天前
回复了 dangoron 创建的主题 Rust 关于借用的一个小问题
比方说 as_mut -> 比方说 as_ref
3 天前
回复了 dangoron 创建的主题 Rust 关于借用的一个小问题
@dangoron
比方说 as_mut 的 type 是 fn as_ref(&self) -> &T,也就是说 as_mut 和 as_ref 的返回的 reference 包含的类型不一定要和 self 的类型一致
书里唯一一次提到 as_ref ( https://doc.rust-lang.org/1.30.0/book/2018-edition/ch17-03-oo-design-patterns.html?highlight=as_ref#adding-the--approve--method-that-changes-the-behavior-of--content )是 Option::as_ref,效果是从 Option<T>变成 Option<&T>,但其实 Option 貌似没实现 AsRef trait...(毕竟和要求的 signature 不一样)
https://doc.rust-lang.org/std/option/enum.Option.html#method.as_ref
但 Arc::as_ref 可以作为一个典型例子:
https://doc.rust-lang.org/src/alloc/sync.rs.html#1946-1948
3 天前
回复了 luassuns 创建的主题 推广 搭建了一个 Vim 论坛
呃,多在 V2EX 的 vim 版发发帖不行吗
3 天前
回复了 caibou 创建的主题 程序员 Android 开发, xps13 9630 怎么样
9370 我装 arch 用了一星期了,感觉很不错
唯一问题是我到货那天装完系统一激动把水打翻了,现在电池 BIOS 能检测得到但是一拔电源就断电,等有空送回去修吧
3 天前
回复了 Livid 创建的主题 Nintendo Switch Nintendo Switch 后面的那个支架松了
任天堂只是 ns 开始才放弃了追求游戏机质量的,gba,nds,3ds 都无比耐摔耐揍
回到这个话题,我更好奇用后面支架玩的话桌子是有多高……我奥德赛玩了一两关就下单了个第三方支架,挺好用的
3 天前
回复了 Fulcrum 创建的主题 Linux Linux 下有没有什么好用的键盘映射软件?
archlinux 的 wiki 上给了好多种方案,有复杂的有简单的,我比较偷懒(又不是特别懒)就用的 Xmodmap
不如转型.Xmodmap 分享帖吧,我的:


```
! mac-like trackpad
pointer = 1 2 3 5 4 7 6 8 9 10

! capslock -> ctrl, l_ctrl-> hyper, shift+capslock -> capslock
clear lock
clear control
clear mod1
clear mod2
clear mod3
clear mod4
clear mod5
keycode 37 = Hyper_L
keycode 66 = Control_L Caps_Lock
add control = Control_L Control_R
add mod1 = Alt_L Meta_L
add mod2 = Num_Lock
add mod3 = Hyper_L
add mod4 = Super_L Super_R
add mod5 = Mode_switch ISO_Level3_Shift

! R_alt -> escape
keycode 108 = Escape NoSymbol Escape
```
代码到处抄的加上自己改了改,自用用 vim 挺顺手的
3 天前
回复了 dangoron 创建的主题 Rust 关于借用的一个小问题
忘了说了,所以楼主的代码不能编译通过的原因是 vec.index(0)是个 reference,reference 不能转移 ownership
而后一个版本(直接调用 index())的时候,x 的类型是&Val,这里是个 borrow,所以编译可以通过
3 天前
回复了 dangoron 创建的主题 Rust 关于借用的一个小问题
let x = vec[0]; 是 move,move 之后 ownership 交给了 x
rust 里 trait 分 Copy 和 Clone,这俩的区别就是 Copy 默认不需要很耗时的调用而 Clone 默认需要,所以 Copy 会自动调用而 Clone 不会(而 scalar,比如 i32,都实现了 Copy )

换个角度:
```rust
#[derive(Debug, Clone, Copy)]
struct Val {
val: i32,
}

fn main() {
let vec = vec![Val{ val: 0 }, Val{ val: 1 }, Val{ val: 2 }];
let x = vec[0];
println!("x: {:?}", x);
}
```
这样就不会报错,因为 let x = vec[0]自动调用了 Copy::clone()

更进一步的理解首先需要参考 Index::index():
https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-Index%3CI%3E
但是仔细看会发现,index()返回的是个 reference …………不能直接 let x = vec[0]的原因是,
如果用了[]这个语法糖,rust 会在调用 index()之后再调用一次 deref
所以直接调用 index()也能编译:
```rust
use std::ops::Index;
#[derive(Debug)]
struct Val {
val: i32,
}

fn main() {
let vec = vec![Val{ val: 0 }, Val{ val: 1 }, Val{ val: 2 }];
let x = vec.index(0);
println!("x: {:?}", x);
}
```
4 天前
回复了 Sparetire 创建的主题 Rust Rust 中说的不可变指的是什么?
除去极其个别的情况(你后面会学到),如果要修改函数的某个参数或是变量,需要要么 own 那个值,要么有 mutable reference
reference 实际上相当于是 const pointer,不能修改指向的地址位置的(用 Rustacean 的话来讲,你只是 borrow 了这个变量)

也就是说是:&bla == ??? const *const bla
&mut bla == ??? * const bla
mut bla = ??? bla
bla = ??? const bla

我也是前段时间才开始学 rust,如有错误请多多指正
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   812 人在线   最高记录 4236   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 13ms · UTC 22:20 · PVG 06:20 · LAX 14:20 · JFK 17:20
♥ Do have faith in what you're doing.
沪ICP备16043287号-1