V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  nebkad  ›  全部回复第 3 页 / 共 7 页
回复总数  130
1  2  3  4  5  6  7  
@bli22ard #6
标准库里为所有 T &T &mut T [自] [动] [地] 实现了 Borrow 和 BorrowMut 。
你不妨试试“自动地”实现一个 trait 在某个 feature 没有 stable 之前是不是允许的。

AsRef 和 AsMut 可没有这个待遇。
并且,其实 AsRef 和 AsMut 更符合设计用途的用法是类似于 OO 里面的子类隐式向父类引用转换。
而 Borrow 和 BorrowMut 在理解了 “有所有权” 和 “有使用权” 的细微差异后就会发现真的很有用
@bli22ard #4 你会这么想是不是因为你没有注意到 这段代码
https://doc.rust-lang.org/src/core/borrow.rs.html#208-241

不可能有别的代码能替代这段标准库里的效果
譬如说,我要实现一个 RingBuffer ,可以 RingBuffer 自己分配 buffer 的内存,也可以接受外部输入的 buffer 。
我们可以发现,无论自己分配还是外部输入,RingBuffer 的大部分功能代码都是一样的,不太可能为此写两种不同的 RingBuffer 。那么,RingBuffer 就可以这么定义:

```Rust
pub struct RingBuffer<B: BorrowMut<[u8]>>(B);
```
357 天前
回复了 sevenfeet 创建的主题 生活 老婆坚持想生孩子,烦
如果你对没有小孩的生活有美好的期待,觉得那是一种持久的自由甚至是幸福,那我只能说你还很嫩。
养育小孩是另一种创业,不知道这个角度对你来说会不会有点启发。
确实有很多人不适合养育小孩,正如很多人不适合创业一样。
359 天前
回复了 yanyao233 创建的主题 程序员 总是忍不住重复造轮子
这很正常,我前两天又手痒造了个基于 ticket 的 spinlock 并且实现了用合理的代价支持线程退出争夺锁
准备再过段时间实现一次 poison 检测
而这些东西,任何现代操作系统都直接提供了实现
361 天前
回复了 fgasdzxc 创建的主题 Go 编程语言 想探讨下 Go 中的网络编程模式
如果你学 Rust ,那就可以很容易地明白他们为什么这么说,但你学 Go 我只能说你要多想。
(对我是来挑事儿的 XD
2024-02-20 17:29:59 +08:00
回复了 nebkad 创建的主题 编程 [抱怨] Ticket Based 的 Spinlock 很难支持取消争夺锁
谁能想到呢,写个 spinlock 都需要引入分布式算法。

在极其有限的内存中(一个 int )挤出两个 bit 用来标记:1.受控取消争夺锁状态,2.有线程崩溃后的 非受控取消争夺锁状态。

先说 1 受控取消
取消者要设置标记,然后把自己的 ticket number N 放在 atomic_int 里面,才可以安全退出,
然后 ticket number 是 N + 1 的等待者检测到这个变化,也把 N + 1 防盗 atomic_int 里面,继续等待。
如此类推,就可以顺利地把所有等待者都顺利更新 ticket 。
第 n 个受影响的等待者会发现自己更新之后,N + n 一直不会变,那么他来负责清除这个受控取消状态的标记。
2024-02-03 16:45:16 +08:00
回复了 drymonfidelia 创建的主题 程序员 tauri 真的太难用了,浪费了我整整一天
这帖子真的太难顶了,浪费了我整整一分钟
2024-01-23 16:28:47 +08:00
回复了 coolfamilyxun 创建的主题 商业模式 感觉个人程序员以后找做模板化的产品根本走不通
所以“开源才是解放程序员自己,同时又能产生价值” 这个结论非常反直觉,但时间尺度够大的时候是成立的。
2023-12-22 16:10:44 +08:00
回复了 wkong 创建的主题 程序员 个人觉得 Go 的 error 设计的非常好,为什么还那么多人吐槽?
调侃:因为你和那些人不是一个档次。(对,你的高)

你想听到的答案:因为口味问题。

真正的原因:因为 go 的 err 强迫你写大量重复且相似的代码,并且这些代码完全可以用更好的模式来取代。
2023-12-19 18:48:15 +08:00
回复了 Aih 创建的主题 Rust Rust 的 Deref trait 是不是叫 Ref trait 更好一些
Deref AsRef Borrow 都有相似的作用,叫做 Ref 很难区别其中的仔细差异
2023-12-14 14:41:23 +08:00
回复了 monkeyWie 创建的主题 Rust 最近初学 rust 有个疑问
@lifespy

如果你是说代码的很多 **表示类型** 的地方都需要表达是否可空,嫌弃 Option 字母多,那你需要的可能是编辑器自动提示。

如果你是说需要链式处理判断是否空,那也是我支持的语法糖作用,并且 Rust 也支持,你甚至还可以用 Try trait V2 来自定义衍生的语义。

总的来说,OP 对 rust 了解太少,习惯或者麻木的东西太多
2023-12-12 02:54:47 +08:00
回复了 monkeyWie 创建的主题 Rust 最近初学 rust 有个疑问
? 语法糖仅仅用来表是可空真的是太浪费了
2023-12-04 00:44:52 +08:00
回复了 clemente 创建的主题 电动汽车 每天通勤 100KM 左右 一年内无车位 帮我看看选什么电车?
只分享体验,你杠那就是你赢
100 km 快速路通勤,用普通的 L2 级 LCC 真的反而会少很多事故,就是自动跟车哪种就足够了:
1. 不用一直踩油门控油门,就不会焦躁,不会路怒,尤其是人累的时候
2. 设置一个合理的跟车距离,可以大幅减少追尾风险
接口(interface) 是一种调用约定,告诉外部使用者,这个东西可以做某个事情。
所以,我们通常会说“实现一个接口”而不是“继承一个接口”。

继承是一种代码组合方式,告诉外部使用者,这个东西不单可以做某个事情,并且这个事情是像以前(父类)那么做的。
你看上面讨论的人,他们甚至都不知道宝马电动车用什么电机,就担心电池寿命……
你看上面讨论的人,他们甚至都不跟你提新 model 3 要用中控屏来挂倒挡……
车是不是垃圾,可以各有各的看法,但是 v 站上讨论车的人,九成九都是不懂装懂的小韭菜……
当然包括我这条
在 rustcc 上看了简介,虽然不懂什么叫 nacos ,但是关于 “配置中心、注册中心需要实现两个不同的协议支持集群部署” 的说明惊艳到了我~ 关注一下
2023-09-13 16:46:14 +08:00
回复了 klmd99 创建的主题 Rust [求助] VSCode 写 rust 不报错了,怎么解决
建议不用 vscode , 用更傻瓜式的
否则最好先从用命令行编译 rust 开始
1  2  3  4  5  6  7  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3040 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 56ms · UTC 12:36 · PVG 20:36 · LAX 04:36 · JFK 07:36
Developed with CodeLauncher
♥ Do have faith in what you're doing.