分享一下我用 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 等我都一律没有去学过,所以这些只能算比较浅显的感想,不喜勿喷。

5754 次点击
所在节点    分享创造
36 条回复
noli
2018-10-21 05:03:00 +08:00
坐等 rust nightly 合并 async await 之后再用来写实际项目。

并非 anyshortcut 的用户,但想了解一下,如果我有 vimium 这样的插件,anyshortcut 可以带给我什么新的价值?
huclengyue
2018-10-21 05:23:06 +08:00
关注一下 rust
devtiange
2018-10-21 06:13:16 +08:00
不是想拍砖, 单纯的觉得这样的 cli 用 nodejs 写会不会代码更少, 开发周期更短呢?
trait
2018-10-21 06:24:22 +08:00
粗看了一下,挺好的。国外对 rust 引起的命令行小“重生”评价挺高的
models 最后三个 impl 考虑一下 macro ?
既然用到了 clap,能不能用 structopt 重写一下 cli 相关,structopt 包装了 clap,一个命令行就是一个 struct 或者 enum,代码更美观好维护一些; edition2018 的 nightly 已经发布了(1.31),stable 会在 12.6,可以考虑一下更新到 2018 版本,具体参见 edition guide
trait
2018-10-21 06:29:18 +08:00
@devtiange node 用个 cli 都要拖家带口?
qdwang
2018-10-21 07:16:21 +08:00
rust 写 wasm 确实舒服 还能结合打包工具一起使用 直接 import rs 项目 感觉很方便
qdwang
2018-10-21 07:17:04 +08:00
缺点感觉是初次编译速度太慢
zxq2233
2018-10-21 07:35:06 +08:00
小哥哥
Wichna
2018-10-21 09:57:15 +08:00
@noli 哈哈哈,我已期待 nightly 合并。

我是一个效率控,vimium 我也很早就知道并且使用过,我没有必要重新造轮子。Anyshortcut 和 vimium 这样的插件完全不一样的,我这个帮你给常用网页绑定一级快捷键、二级快捷键或混合快捷键,甚至它们可以混合使用。它是一个比较极客的产品,一般人用不到甚至会嗤之以鼻,但是你只要理解了它习惯了绝对会觉得**Anyshortcut 真香**。
Wichna
2018-10-21 09:59:28 +08:00
@devtiange 跟开发周期没有任何关系,用什么语言写这个 cli 工具都可以,只是我现在热衷于 Rust 所以其他语言不考虑了
Wichna
2018-10-21 10:01:34 +08:00
@trait 感谢指点。

models 最后三个 impl 考虑一下 macro ?
哈哈哈这个还真的可以,我后面试一下。

structopt 我还没有用过,我到时候看看。

Rust 2018 发布之后我到时候一定会切换到这个版本的。
Wichna
2018-10-21 10:02:05 +08:00
@qdwang 编译速度确实是硬伤,官方应该也在优化中吧
Wichna
2018-10-21 10:05:14 +08:00
@huclengyue 哈哈推荐关注
dodo2012
2018-10-21 11:16:14 +08:00
去年在学,主要我一直学的是脚本类语言,然后,在生命周期和所有权这里卡了很久,后来工作用不到就慢慢丢下来了,现在对这两个概念还是有点乱,`a `b 的头大了
Wichna
2018-10-21 11:30:58 +08:00
@dodo2012 是的,每个人都会有这样的感觉,这个只能静下心来认真了解一下,之后一定会有柳暗花明的感觉
trait
2018-10-21 12:08:09 +08:00
@dodo2012 很多人说 rust 难学,被生命周期所有权吓到(严格来说 rust 里面并不存在“ lifetime ”,只不过是历史”误称“现在语言组想改改不了了,它在社区传播太广泛了,在 NLL 中这个名词更不准确,在 rustc 开发过程中我们更多地称呼为 region,只不过在给用户错误诊断里面还是称呼为 lifetime ),即将到来的 edition2018 引入 nll 后,“ lifetime ”更符合用户的直觉,与 edition2015 中类作用域的”线段“式粗暴检查不同,nll 是精确到点,绝大多数情况下你甚至不会觉察到它的存在。所有权和借用如果学过操作系统,了解进程同步的读-写者模型这个问题就很容易理解了。
学 rust 千万不要看中文翻译,内容落后,本身中文资料少,你从书里面看到的名词中文搜索根本找不到有价值的信息
h404bi
2018-10-21 12:25:31 +08:00
@dodo2012 ownership, borrowing, lifetime,一到这里就脑疼 。不过还是很想把它啃下来。
@trait The Book 中英文对照着看感觉还行
quinoa42
2018-10-21 12:26:32 +08:00
看了一下居然支持 pattern matching,谢安利
不过最近 kotlin 写着感觉也还可以,等到有空了再尝试吧
Wichna
2018-10-21 12:29:52 +08:00
@trait 请问你是在 rust 官方组吗?看你提到“在 rustc 开发过程中我们更多地称呼为 region ”
Wichna
2018-10-21 12:30:31 +08:00
@h404bi 我也是先看的官方的英文 book,很推荐

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

https://www.v2ex.com/t/499546

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

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

© 2021 V2EX