Rust构建工具和包管理器Cargo
1. 简介
Cargo 是 Rust 的构建系统和包管理器,大多数 Rustacean 们使用 Cargo 来管理他们的 Rust 项目,因为它可以处理很多任务,比如构建代码、下载依赖库(在 Rust 中称为「crate」)并编译这些库。
2. 使用 Cargo
2.1 创建项目
Cargo 工具创建项目的基本语法格式如下:
1cargo new <project>
运行上述命令后,会创建一个名为 <project> 的目录,并初始化该目录为一个仓库,其目录结构如下:
123456.├── .git├── .gitignore├── Cargo.toml└── src └── main.rs
Cargo.toml 为当前项目的 Cargo 配置文件,采用的是 TOML 文件格式。
2.2 构建项目
Cargo 工具构建项目的基本语法格式如下:
12# 在项目目录下执行cargo build
运行上述构建命令后,会在项目目录下生成一个 target 目录,该目录下的 debug 目录中包含了一些编译文件和生成的可执行文件等信息。
【注】当项目最终准备好发 ...
Rust代码格式
1. 代码格式
函数体需要用花括号包裹,一般左花括号与函数声明置于同一行并以空格分隔。
Rust 缩进风格为 4 个空格,而不是 1 个水平制表符。
Rust 代码中的函数和变量名使用 snake case 规范风格。
2. 自动格式化
Rust 开发了一个叫做 rustfmt 的自动格式化工具,能够将用户编写的代码自动调整为一种标准风格。最新版的 Rust 中已经包含了该工具。详细使用参见命令手册:
1rustfmt --help
Rust学习资料汇总
1. 学习资料
1.1 在线学习资料
Rust 官方资料集合
Rust 程序设计语言英文版
Rust 程序设计语言中文版
Rust 安装和版本管理工具:Rustup 使用文档
Rust 构建工具和包管理器:Cargo 使用文档
Rust API 文档
Rust and WebAssembly
1.2 本地学习资料
运行 rustup doc 在浏览器查看本地文档。
2. 学习论坛
Rust 官方 Discord 群聊
Rust 中文社区
Rust 用户论坛
Rust 国际论坛
stack overflow
Manjaro21.0系统报错
1. ENOSPC: System limit for number of file watchers reached
问题:系统对文件监控的数量已经达到限制数量了。
解决:
修改 /etc/sysctl.conf 文件,添加以下代码:1fs.inotify.max_user_watches=52428800
然后刷新配置:1sudo sysctl -p
Linux下更新Deepin-Wine5软件
1. 简介
Deepin-Wine 已经升级到第 5 版,对国内一些 Windows 应用兼容性也更好,希望深度越做越好(虽然 Linux 原版要更好,但奈何大多数国内软件厂家都不做 Linux 版应用)。
2. 更新
假设 Linux 系统上已经安装了 deepin-wine5 和一些 wine 版的软件,比如 Tim 和 WeChat。如果要更新这些应用(直接在软件里更新是显然不成的),需要先到官网下载对应安装包,然后运行下面代码就能够实现 wine 版软件的更新:
12env WINEPREFIX="$HOME/.deepinwine/Spark-TIM/" deepin-wine5 TIM.xxx.exeenv WINEPREFIX="$HOME/.deepinwine/Deepin-WeChat/" deepin-wine5 WeChatSetup.exe
其中,WINEPREFIX 是用来指定原 wine 版应用的路径的。
附录
参考资料:
「养老」重装 Deepin OS + 优化记录(备忘手册)
LaTeX学习资料汇总
1. 学习资料
1.1 在线学习资料
Learn LaTeX.org
CTex.org
1.2 本地学习资料
texdoc 工具
2. 学习论坛
tex stack exchange
MarkDown学习资料汇总
Learning-Markdown (Markdown 入门参考)
Linux学习资料汇总
1. 在线学习资料
1.1 Bash Shell
bash-manual
Advanced Bash-Scripting Guide
1.2 鸟哥的 Linux 私房菜
鸟哥的 Linux 私房菜(简体中文)分站
鸟哥的 Linux 私房菜(繁体中文)主站
1.3 Linux Kernel
Linux Kernel 源码
Linux Kernel 文档
1.4 ArchWiki
Arch Linux Wiki 个人感觉是目前比较详实的 Linux 系统用户文档库,常见的 Linux 系统问题一般都能在上面找到解决方案。
ArchWiki 网址
1.5 LinuxFromScratch
Linux From Scratch(简称 LFS)项目是一个帮助用户一步一步搭建自己的 Linux 系统的教学项目,对理解 Linux 系统的组成和构造还是很有帮助的。
1.6 Decoded: GNU coreutils
Decoded: GNU coreutils 项目解码 GNU 常用工具合集 coreutils 中各类工具的底层实现,并使用流程图给出了详细的介绍。
2. 本地学习 ...
LinuxShell自动交互
1. 简介
Linux Shell 的自动交互在很多场景下会使用到,比如我们需要批量运行一些需要输入参数进行交互的命令时,此时 Shell 的自动交互就能将我们从重复无聊的手动交互中解放出来。
2. 方法
以下我们通过 ssh-keygen 命令生成密钥来举例说明各个方法的使用。
2.1 内联输入重定向符
内联输入重定向符是一种输入重定向符,该输入重定向符用于从命令行中指定用于输入重定向的数据,因此可以用它来实现 Shell 的自动交互。
需要注意的是,在以下方式中,两个「标记符」EOF (也可以设为其他的字符串)之间的每一行为直接对应每一条交互输入。因此,给出的参数前后不能有多余的空格和 Tab,否则也会被当作输入参数的一部分。
1234567#!/bin/bashssh-keygen -t rsa -C "example@163.com" << EOF$HOME/Tmp/exampleEOF
若需要消除给出的参数前面多余的 Tab,特别是当 ssh-keygen 处于多层缩进区域时,如果顶行写会导致脚本不美观。此时我们可以使用 << ...
Manjaro21.0下KDE5桌面设置桌面壁纸
1. 缘由
本来 Manjaro 的 KDE 桌面是可以直接在「系统设置」中直接 GUI 直接更换桌面壁纸的,但我发现每次系统进行滚动更新后,原先的壁纸设置就消失了,需要重新设置。本着不愿动鼠标的念头,不如写个脚本来实现吧(本质还是懒)。然而这个似乎不是简单的事情,好在 StackOverflow 在手,知识全有(白嫖真香)。
2. 代码
2.1 单张壁纸固定
固定显示某张图片作为桌面壁纸。
1234567891011121314151617#!/bin/bashlocation="/home/xxx/..." # 壁纸目录路径wallpaper="23.jpg" # 壁纸名称qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript ' var allDesktops = desktops(); print (allDesktops); for (i=0;i<allDesktops.l ...
BashShell变量
1. 简介
Bash Shell 使用「环境变量」来存储有关 Shell 会话和工作环境的信息。环境变量分为两类:
全局环境变量:全局环境变量对于所有 Shell 会话和所生成的子 Shell 、孩子 Shell 都是可见的。
局部环境变量:局部环境变量只对创建它们的 Shell 和子 Shell 可见。
本地环境变量:本地环境变量只能在定义它们的函数内部以及子函数中可见。
【注】有关子 Shell 和孩子 Shell 的详细介绍参见 LinuxShell父子关系概述。
环境变量区分大小写,系统环境变量基本都是使用全大写字母,以区别于用户自定义的环境变量,因此用户自定义的环境变量最好都使用小写。
2. 环境变量
2.1 全局环境变量
查看全局变量可以使用 env 或 printenv 命令。
123env # 查看所有全局变量printenv # 查看所有全局变量printenv <variable> # 查看单个全局变量 <variable>
【注】env 和 printenv 只会输出全局变量,而且也 ...
XBM格式
1. 简介
XBM 是一种最简单的一种图像格式,不像其他图像格式那样最终存储的二进制数据,XBM 图像格式存的是 C 源码。XBM 格式基本只在 X Windows 系统上使用,只支持两种颜色。相较于 BMP 格式,XBM 格式更像是 BMP 图像在 Windows 下的 icon 文件。
【注】XBM 格式在 X Windows 环境外几乎很少用到。
2. 格式
2.1 详解
XBM 图像格式示例如下:
12345#define imagename_width 16#define imagename_height 2#define imagename_hot_x 1#define imagename_hot_y 1static unsigned char imagename_bits[] = {0x10, 0x10, 0x10, 0x10};
其中,imagename 为具体的 XBM 文件名;imagename_width 和 imagename_height 分别表示图像的宽度和高度;imagename_hot_x 和 imagename_hot_y 分别表示 ...