🌸

Description
记录一些 学习笔记,工具,和其它奇怪的东西
Advertising
We recommend to visit

Last updated 2 years, 8 months ago

Last updated 2 years, 8 months ago

官方网站 https://www.yu444.com
客服频道 @kefu
供求频道 @gongqiu
公群频道 @hwgq (汇旺公群首字母)
新群 @xinqun
核心大群 @daqun
记账机器人 @hwjz
公司介绍 @hwdbgs
担保流程 @dbliucheng

Last updated 1 month, 3 weeks ago

1 week, 2 days ago
想加个 `CODE_OF_CONDUCT.md`,但不会写文案,发了个 good first issue,半小时收到了 claim,开心

想加个 CODE_OF_CONDUCT.md,但不会写文案,发了个 good first issue,半小时收到了 claim,开心

上次 CONTRIBUTING.md 也是这样找人写的,专业的事给专业的人,并且可以得到贡献机会 - 很多人想贡献只是不懂 Rust/编码,感觉这是个良性的社区互动

https://github.com/sxyazi/yazi/issues/1905

2 weeks, 1 day ago

mlua v0.10 升级体验 昨天把 mlua 从 0.9.9 升到 0.10.0,以为就 10 分钟的事,结果改了一个小时也没改完,从满血直接给我干到吐血: • 所有 struct、trait lifetime 都删了,行吧,为了更方便推断类型,我可以批量替换下 • trait 名从 TableExt 换成了 ObjectLike,也可以替换下 • Scope 的 create_any_userdata 给扬了,啊?变更日志没有啊,也没标记 deprecated,就没了??直接把 owned any…

3 weeks, 3 days ago
最新 kitty 0.37.0 加了个超酷光标痕迹动画(cursor trail animation)

最新 kitty 0.37.0 加了个超酷光标痕迹动画(cursor trail animation)

翻了下实现 PR 发现竟然还给 Yazi 做了适配, https://github.com/kovidgoyal/kitty/pull/7998 爱了!

4 weeks ago

mlua v0.10 升级体验

昨天把 mlua 从 0.9.9 升到 0.10.0,以为就 10 分钟的事,结果改了一个小时也没改完,从满血直接给我干到吐血:

• 所有 struct、trait lifetime 都删了,行吧,为了更方便推断类型,我可以批量替换下

• trait 名从 TableExt 换成了 ObjectLike,也可以替换下

• Scope 的 create_any_userdata 给扬了,啊?变更日志没有啊,也没标记 deprecated,就没了??直接把 owned any userdata 需求干死了,害,那就把我 struct 从 register_userdata_type() 全换成 UserData trait 吧

mlua::Stringto_str()as_bytes() 返回类型也变了?从 Cow<str>&[u8] 变成了 BorrowedStrBorrowedBytes,用得时候得 let s = s.to_str(); let s = s.as_ref()。这个也没任何记录,对着编译器自己修吧

mlua::Stringto_string_lossy() 返回值从 Cow<str> 改成了 String,啊?标准库都不敢这么干,反正你 to lossy 我就分配内存。这个也没记录,对着编译器自己修吧

• 好消息,0.10.0 的 UserDataRef 只能在 non-scoped 用了,scoped 就自求多福吧,https://github.com/mlua-rs/mlua/issues/475 - 这个昨天调了好久,它甚至不是一个编译错误,而是行为变化产生的运行时错误,同样没记录,不问不知道

MultiValue::from_vec 也删了,没记录,也没标记 deprecated 就没了

总之,非常糟糕升级体验,连迁移文档都没,全靠自己猜,改了 89 个文件了,卡在 UserDataRef 问题上,预感还远远没改完,还是头一次升级个 crate 改那么多东西。。。

https://github.com/sxyazi/yazi/pull/1842

1 month ago

Rust std::fs::copy() 平台差异记录

fs::copy()io::copy() 不同,除了复制文件本身,还会复制文件权限,但一些(网络)文件系统不支持设置权限 - Operation not supported (os error 95),这会导致文件也没法复制。

这个问题只存在于 Linux/Android,因为 Linux 没有像 macOS 的 fclonefileatfcopyfile,Windows 的 CopyFileEx 一个 syscall 搞定整个复制的 API,因此需要将一个原子操作拆成 2 个,Rust 为了保证安全,之中任何一个失败都视为整体失败。

而文件能在所有 FS 复制是预期行为,因此对于 Linux/Android,我会 io::copy() + 静默 fchmod。strace 了下它和 fs::copy() 一致,这意味着它仍然会尝试 copy_file_range,不会损失 CoW FS 的优势。

需要注意的是,对于 macOS,当前实现,io::copy() 就只是个 userspace read-write-loop,所以 macOS 应该仍然使用 fs::copy(),反正也不存在这个问题。

TLDR:为了让文件在所有 FS 都能复制,并且保留 CoW,Linux/Android 使用 io::copy() + fchmod,其它使用 fs::copy()

https://www.reddit.com/r/rust/comments/57cmm1/weird_behavior_of_stdfscopy_on_networkmounted/

1 month, 4 weeks ago
[#TIL](?q=%23TIL) [#rust](?q=%23rust)

#TIL #rust

啊?Rust 原来还有 std::io::IsTerminal 这种东西,https://doc.rust-lang.org/std/io/trait.IsTerminal.html

We recommend to visit

Last updated 2 years, 8 months ago

Last updated 2 years, 8 months ago

官方网站 https://www.yu444.com
客服频道 @kefu
供求频道 @gongqiu
公群频道 @hwgq (汇旺公群首字母)
新群 @xinqun
核心大群 @daqun
记账机器人 @hwjz
公司介绍 @hwdbgs
担保流程 @dbliucheng

Last updated 1 month, 3 weeks ago