做了一个PC端图片阅读器,将它命名为「图阅」|初尝rust
在“图读”上简单制作标志
目录
1这张照片阅读器怎么样?
2你为什么要做这项工作?
3你是怎么开发的?
4 rust感觉怎么样?
5在哪里下载软件? ( show me the code )
// 它长这样
引起了我的兴趣,我制作了一个在电脑上使用的图像读取器。 长度是这样的。
画廊列表
看看漫画吧
请看照片
// 缘由
其实去年也做过类似的东西。 那个时候被命名为漫画库,我想要用户友好的漫画阅读器。
漫画有各种各样的排版方式。单页、从左到右、从右到左、长条滚动。
在线阅读时等待加载,本地阅读时在windows附带的图像浏览器中难以使用。
那便自己做一个。
去年的软件是用electron做的。 electron内置了chromium内核,对小型软件来说太大了,有杀鸡用的牛刀的意思。
我碰巧最近对rust语言感兴趣,听说这种编程语言以极其陡峭的学习曲线而闻名。 而且,据说学习会改变思考。
于是一拍即合(用tauri来写一个图片浏览器吧。
// 开发
# 框架
tauri和electron一样,也是开发人员开发跨(桌面)平台软件的工具包。 前端也是web,但其后端是rust。
# UI
对于不擅长美术的我来说,要写有界面的软件,前端UI库是必不可少的。 这次使用的库是NaiveUI,当初一看名字,嗯,我觉得很适合我。
# 前端
用Vue3,很亲切。
# 后端
rust是从头开始学习的。
首先阅读rust文档(的一部分),理解其精神;
接着上了leetcode,用rust刷了十几道题,熟悉了基本的语法
好吧,开始写吧。
// rust体验后感,与对其精神的领会
从现在涉及到的rust的内容来看,我个人理解其精髓在于变量“所有权”这一理念。 每个内存只有一位(变量)所有权,持有所有权的人必须对此内存负责到底。变量在内存在。
此外,所有权可以转让。
这特性便造就了move(移动)代替copy(拷贝)成为默认操作— —在很多其他语言中,拷贝才是默认行为,可以理解为“a将某个信息传递给b,b拥有该信息的拷贝,但a也依然拥有该信息”。 这符合直觉。
但是,人们终究还是为了这种“直观”的行为付出代价,也就是信息的复制代价太高(信息量太大,复制需要时间和内存)的时候,人们做了一个浅拷贝。 信息还只有一个,静静地呆在那里,我们俩都有那个地址就行了。 这样我们就可以调查并更改那个。
然而,人们终究必须是“浅拷贝”付出另外的代价,即竞争,以节约这一成本。 A和b都想篡改同样的信息的时候,怎么办? 而且,一个人想删除这个信息,另一个人不知道这个信息被删除了,这个时候也去调查了……铺天盖地的臭虫来了。
rust做了一个改变。在最初最初的地方做了一个简单的改变。
rust说,不妨把信息看成是像实物一样的东西,A要把这东西给到B,那A手头就没有这个东西了。
只要将信息视为实物,就不存在上述问题。
永远只有一个人能拥有一份信息的所有权,不再竞争;
所有权只能转让,复制消失了(当然,如果需要的话,可以定义复制行为,复制多个一个信息)。
当然,所有权除了转让外,还包括还可以借用。
rust定义了“可变”和“不变”,即更改一份信息的权限。 它还保证了借用同一信息的所有人中,最多只有一个人有修改权限。 (只读和可写借用之间也有限制,甚至保证了只读方的安全性。 好像是读写锁。 )
这样设计,使rust安全。 大多数安全隐患都是在编译阶段被抓住的。 当然,编译器非常严格,但严格来说很严格,但提示非常友好。
所有这些都来源于最初进行的理念转变。
美妙。
一开始写的话确实是卡顿。 在大脑中,你必须时刻记住这个信息在拥有所有权的人那里。 必须记住此信息的类型(不允许像c/c那样进行隐式类型转换)。
你可以不记得。 编译器会亲切地告诉你你在哪里的sb。 另外,还会教你修改方法。
写得很多了就能写得很流利了。 编程归根到底是一个练习的过程。
// 货在哪
源代码和windows可执行文件位于github上:
https://github.com/b d777/imageview
如果网络条件不好的话请说我的话。
非常开心。
