【保姆级教程】如何用Rust编写一个ChatGPT桌面应用
为什么我们需要一个桌面应用
原因实在太多,我们需要便捷地导出记录,需要在回答长度超长的时候自动加上“继续”,需要收藏一些很酷很实用的prompt......
(首先我假设你是一名如我一样习惯用IDEA开发的java仔)
为什么是用Rust编写
- 效率高、资源占用量低。
- 安全性高:Rust 是一种内存安全的语言,其所有操作都经过系统级别的严格代码检查,减少了运行期间的崩溃和内存泄漏等问题的出现。
- 可维护性高:Rust 能够更好地编写可维护的代码,并且支持面向对象编程和函数式编程,这使得开发人员能够更好地组织代码,易于理解和修改。同时,Rust 的模块化设计使得不同的开发人员可以同时在项目中工作,而不会相互干扰。
- 跨平台:Rust 广泛支持多种操作系统和平台,包括 Windows,macOS,Linux 和 Android 等,这使得开发人员能够设计适用于不同平台和设备的应用。
如何用Rust编写一个桌面应用
1.安装 Rust 语言工具链:首先,请确保你已安装了 Rust 编程语言工具链,包括 Rust 编译器 (rustc) 和包管理工具 (cargo)。可以通过访问 Rust 官方网站 并遵循说明来安装。
2.安装 Rust 插件:打开 IntelliJ IDEA,然后转到 "File" > "Settings" (Windows/Linux) 或 "IntelliJ IDEA" > "Preferences" (macOS)。在设置窗口中,选择 "Plugins",搜索 "Rust",然后单击 "Install"。安装完成后,重启 IntelliJ IDEA。
3.创建新的 Rust 项目:在 IntelliJ IDEA 中,选择 "File" > "New" > "Project",然后在项目类型列表中选择 "Rust"。按照提示配置项目设置,然后单击 "Finish" 以创建新项目。
4.添加 GUI 库:你可以选择的 GUI 库(如 GTK 或 Qt),在项目的 Cargo.toml 文件中添加相应的依赖项。例如,对于 GTK,需要添加如下依赖:
5.[dependencies] gtk = "0.9"
6.编写代码:使用 IntelliJ IDEA 编辑器编写 Rust 代码。Rust 插件会提供代码补全、语法高亮、错误提示等功能。
7.构建和运行:使用 IntelliJ IDEA 的内置终端或外部终端运行cargo build和cargo run命令,以构建和运行你的 Rust 桌面应用程序。
保姆教程的试错与验证
为了验证这个流程是否足够保姆级,我提前发给同事操作了一遍,最后在cargo run这里报错没有glib-2.0。这是因为在 macOS 上运行包含gtk依赖项的 Rust 项目时,需要先在系统上安装 GTK+ 和相关库。
可以通过使用 Homebrew 包管理器来解决这个问题。请按照以下步骤操作:
- 如果尚未安装 Homebrew,请访问 Homebrew 官方网站 并按照说明进行安装。
- 打开终端并运行以下命令以安装 GTK+ 及其依赖库:
- brewinstallgtk+3 brewinstalladwaita-icon-theme
- 安装 pkg-config 工具:
- brewinstallpkg-config
- 设置环境变量,让 Rust 编译器和链接器能够找到 GTK+ 库。在 shell 配置文件中(如/.bashrc、/.zshrc、~/.zshrc等),添加以下行:
- exportPKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"
- 保存更改并重新加载 shell 配置文件,以使更改生效。比如你修改了~/.zshrc,则应运行以下命令:
- source~/.zshrc
Rust编写的桌面应用效果示例
当你看到这个hello world,就已经成功一大半了。因为已经有大佬开源了一套
https://github.com/lencx/ChatGPT 目前star过3w。很可惜的是,由于被盗用和潜在的法务风险,后续更新就不开源了,大家也可以基于这个版本发挥自己的创造力了。下图就是提供了便捷下载的一个示例。
作者:王梦津
内容来源:京东云开发者社区
【保姆级教程】如何用Rust编写一个ChatGPT桌面应用的更多相关文章
- 强大博客搭建全过程(1)-hexo博客搭建保姆级教程
1. 前言 本人本来使用国内的开源项目solo搭建了博客,但感觉1核CPU2G内存的服务器,还是稍微有点重,包括服务器内还搭建了数据库.如果自己开发然后搭建,耗费时间又比较多,于是乎开始寻找轻量型的博 ...
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- 自建本地服务器,自建Web服务器——保姆级教程!
搭建本地服务器,Web服务器--保姆级教程! 本文首发于https://blog.chens.life/How-to-build-your-own-server.html. 先上图!大致思路就是如此. ...
- Eclipse for C/C++ 开发环境部署保姆级教程
Eclipse for C/C++ 开发环境部署保姆级教程 工欲善其事,必先利其器. 对开发人员来说,顺手的开发工具必定事半功倍.自学编程的小白不知道该选择那个开发工具,Eclipse作为一个功能强大 ...
- RocketMQ保姆级教程
大家好,我是三友~~ 上周花了一点时间从头到尾.从无到有地搭建了一套RocketMQ的环境,觉得还挺easy的,所以就写篇文章分享给大家. 整篇文章可以大致分为三个部分,第一部分属于一些核心概念和工作 ...
- 用 Python 写个贪吃蛇,保姆级教程!
本文基于 Windows 环境开发,适合 Python 新手 本文作者:HelloGitHub-Anthony HelloGitHub 推出的<讲解开源项目>系列,本期介绍 Python ...
- Hive窗口函数保姆级教程
在SQL中有一类函数叫做聚合函数,例如sum().avg().max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的.但是有时我们想要既显示聚集前的数据, ...
- 【良心保姆级教程】java手把手教你用swing写一个学生的增删改查模块
很多刚入门的同学,不清楚如何用java.swing去开发出一个系统? 不清楚如何使用java代码去操作数据库进行增删改查一些列操作,不清楚java代码和数据库(mysql.sqlserver)之间怎么 ...
- [保姆级教程] 如何在 Linux Kernel (V5.17.7) 中添加一个系统调用(System call)
最近在学习 <linux Kernel Development>,本书用的linux kernel 是v2.6 版本的.看完"系统调用"一节后,想尝试添加一个系统调用, ...
- 看我是如何用C#编写一个小于8KB的贪吃蛇游戏的
译者注:这是Michal Strehovský大佬的一篇文章,他目前在微软.NET Runtime团队工作,主要是负责.NET NativeAOT功能的开发.我在前几天看到这篇文章,非常喜欢,虽然它的 ...
随机推荐
- Azure DevOps - 团队成员有权限却无法看到 Azure Repo
我们需要进入Organization Settings, 在Users中找到相关的用户,确认用户Access Level是否为stakeholder. 点击最右侧三个点,Change Acce ...
- (转载)Python 浅析线程(threading模块)和进程(process)
线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务 进程与线程 什么 ...
- 基于Quartz.Net通过反射进行任务调度
通过反射加载任务调度 需求: 因为有些任务需要进行各种定时操作,因此将 Quartz.Net 简单封装了一下使用: 希望通过上传 dll 来进行每个任务的调度,所以写了个反射调度示例: Program ...
- 写Java程序有感
最近我练习了Java的学生管理系统的程序代码,多亏了前段时间小学期的系统类练习,让我比较容易地就能够理解该题的题意,再根据我学到的相关的Java知识,就好像是一个套用公式的逻辑. 用到的相关知识: 1 ...
- 《程序员的自我修养》学习笔记——ELF 文件结构介绍【第二弹】
ELF 文件结构介绍 文件头 以 ELF 文件64位版本为例: e_ident [ELF魔数 16byte] 1-4字节:ELF 文件都必须相同的标识码,分别为 0x7F,0x45,0x4C,0x46 ...
- golang中关于死锁的思考与学习
1.Golang中死锁的触发条件 1.1 书上关于死锁的四个必要条件的讲解 发生死锁时,线程永远不能完成,系统资源被阻碍使用,以致于阻止了其他作业开始执行.在讨论处理死锁问题的各种方法之前,我们首先深 ...
- Windows 10 ltsc 2021 (2021/11/17更新版本)
Windows 10 Enterprise LTSC 2021 (x86) - DVD (Chinese-Simplified)文件:SW_DVD9_WIN_ENT_LTSC_2021_32BIT_C ...
- 博客与AI
最近AI自动生成技术文章和答案在圈子里面引起了很大轰动,Stack Overflow暂时拒绝接收GPT生成的结果.我也经常性地浏览或者编写博客,但是最近我使用new bing或者ChatGPT的过程中 ...
- Linux防火墙与端口操作命令
CentOS 7系统 目录 1. 防火墙操作命令 2. 端口操作命令 3. CentOS 7 下安装firewall 1. 防火墙操作命令 序号 作用 命令 1 查看防火墙状态 systemctl s ...
- 基于el-input实现数字区间输入框(已发布npm/github)
项目地址:https://github.com/heyu3913/InputNumberRange (求star) input-number-range tips:更多定制化需求请联系: 13102 ...