做了一个PC端图片阅读器,将它命名为「图阅」|初尝rust

起名 2024-04-25 09:11

在“图读”上简单制作标志

目录

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

如果网络条件不好的话请说我的话。

非常开心。

标签:
全部评论