分享一下我用 Rust 写的 CLI 版 Anyshortcut 以及使用 Rust 半年的感想

2018-10-21 01:15:27 +08:00
 Wichna

Anyshortcut是我发布于 2017 年 12 月的 Chrome/Firefox 效率插件,一直坚持订阅制收费,到目前为止注册用户将近 1000 位,使用信用卡订阅用户接近 3%吧。

大半年前接触到 Rust,被这门语言深深折服,于是从官方文档开始学习 Rust,入门之后写了一个Anyshortcut CLI版。

项目地址

https://github.com/anyshortcut/anyshortcut-cli

自认为这个项目很适合 Rust 初学者学习。

命令行的 Anyshortcut 可以干什么?

因为 Anyshortcut 的快捷键是可以同步的,对于 CLI 程序是通过 Access token 来访问后端 API 来同步快捷键的。Access token 可以在官网用户中心找到。

用 Access token 登录之后即可把所有快捷键同步下来,然后可以使用命令行快速打开网页。

比如,我给https://www.google.com 绑定了快捷键G,那就可以输入as g快速用默认浏览器打开 Google。

$ as g
Url: https://www.google.com/

其他的混合快捷键、二级快捷键也是类似,就不再介绍了。

当然这里的命令asanyshortcut的别名,要不然名字太长了,根本就算不上效率工具了。

alias as=$(which anyshortcut)

怎么安装

cargo install anyshortcut
brew install anyshortcut

使用 Rust 半年之后的感想

申明:除了 Rust 之外我个人熟悉的编程语言只有 C++ 2003, Java, Python, Javascript, Groovy,我并没有研究过各种编程语言,甚至 Ruby、Go、Swift、Kotlin、Scala,Haskell 等我都一律没有去学过,所以这些只能算比较浅显的感想,不喜勿喷。

6063 次点击
所在节点    分享创造
36 条回复
Wichna
2018-10-21 12:31:35 +08:00
@quinoa42 Rust 的 pattern matching 非常强大好用的,Rust 的有点 pattern matching 都反而不是最重要的优点了
Wichna
2018-10-21 12:32:25 +08:00
@quinoa42 Rust 的 pattern matching 非常强大好用的,Rust 的优点很多,pattern matching 不是算是最重要的优点了
quinoa42
2018-10-21 12:56:39 +08:00
@trait 刚看了楼主和层主的安利之后去 github 上搜了一下 rust 相关话题,没想到发现了新世界
现已安装 fd,exa 和 bat😂
Wichna
2018-10-22 00:36:51 +08:00
@quinoa42 哈哈哈,rust 非常适合写 cli 应用,官方还专门成立了 cli 工作组在这方面不遗余力的推进。就像#4 说的:国外对 rust 引起的命令行小“重生”评价挺高的
sampeng
2018-10-22 09:10:02 +08:00
同样有 rust 真实项目在跑。编译过了就绝对没问题,这点真的是程序员福音
Wichna
2018-10-22 10:28:50 +08:00
@sampeng 哈哈哈是的
sampeng
2018-10-22 11:23:54 +08:00
@Wichna 我还算大规模用…一小程序几万个终端设备跑着。啥毛病没有。就是一开始 tokio 有点毛病。姿势不对,http 一超时就全部死那了…后来发现没默认 timeout 回调,所以是开源库的锅。

rust 写起来太舒服了。搞的现在没有宏写 golang 简直是噩梦一样

错误类型让代码更严谨

nightly 的编译插件减少大量的开发量

模式匹配也是好用到爆炸。虽然无法避免深层次嵌套,但用宏可以很优雅的解决

不觉得 lifetime 很难理解啊。理解整个内存使用原则随借随还,其实 ownership, borrowing, lifetime 感觉都是在解决内存管理问题、这些机制去保证不用 gc 和手动管理内存的情况下也不会有内存问题。就是有些深层次嵌套的时候逻辑上有点问题。写起来很蠢。

feature 标记解决多环境问题很优雅。

等等等等

总的来说,很看好 rust。就是少了大的开源项目。
xiangchen2011
2018-10-22 16:04:22 +08:00
blog 有 rss 么,可以订阅下
Wichna
2018-10-22 19:19:05 +08:00
@xiangchen2011 谢谢,你说的是我的这个 https://folyd.com/blog/ ?我本人没有宣传这个网站,暂时没有提供 rss,以后可以考虑
songtianyi
2018-10-23 10:53:13 +08:00
Wichna
2018-10-27 21:58:50 +08:00
@trait 感谢指点,我今天基于 Rust 1.30 用 proc_macro_derive 实现了自动 impl Storage 😄

https://github.com/anyshortcut/anyshortcut-cli/blob/a33beb4983853ff66446749c219e4686913ee085/storage-derive/src/lib.rs
trait
2018-10-27 22:10:24 +08:00
@Wichna awesome :) 一个小小的建议,rust 里面建议的模块名和 crate 名都用下划线 storage_derive
trait
2018-10-27 22:19:04 +08:00
@Wichna https://github.com/anyshortcut/anyshortcut-cli/blob/a33beb4983853ff66446749c219e4686913ee085/src/utils/ui.rs#L13
这里用 match 改下?这里用了 Result 但是 y|n 返回 Ok,_ 又只是 print
match input {
y|n => Ok(..)
_ => Err(..)
}
oyyd
2018-10-28 13:15:39 +08:00
GJ. Chrome Extensions 免费应用偏多,楼主分享些“订阅制收费”的经验如何?
Wichna
2018-10-28 14:14:38 +08:00
@trait 哈哈哈谢谢,取名的时候没有注意用下划线,我以后注意
Wichna
2018-10-28 14:17:08 +08:00
@oyyd 订阅制收费其实挺难的,要么产品能解决大多数人刚需,要么产品能做到极致。然后多花时间做 Marketing

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/499546

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX