NiQin
更新于
2022-10-06 14:34:50+08:00
浏览数量:
60048
关键词/标签:
rust
rust-web
rust-web-guide
rust-web-零散
##### Rust Web 实践零散
目前,仅是个人 Rust Web 开发中的一些记录。
涵盖:Rust Web 生态中的 Tide、actix-web、Yew、async-graphql、surf、handlebars-rust、rhai、jsonwebtoken,以及 mongodb 等。
完整的内容,还在进一步规划和整理之中。
学以聚之,问以辩之。终日乾乾,与时偕行。
NiQin
更新于
2022-09-28 15:34:49+08:00
浏览数量:
121497
关键词/标签:
rust
cargo
cargo-book
cargo-手册
Cargo 是 [Rust](https://rust-lang.niqin.com/zh-cn) 的[包管理器和构建系统](https://cargo-book.niqin.com/zh-cn/appendix/glossary.html#package-manager '"package manager" (glossary entry)')。Cargo 会下载你的 Rust [包](https://cargo-book.niqin.com/zh-cn/appendix/glossary.html#package '"package" (glossary entry)')依赖项,编译您的包,生成可分发的包,并将它们上传到 [crates.io](https://crates.io/) - Rust 社区的 *[包注册表](https://cargo-book.niqin.com/zh-cn/appendix/glossary.html#package-registry '"package registry" (glossary entry)')*。
Cargo 手册是使用 Cargo 全面指南教程,Cargo 是 Rust 的包管理器,通过本手册全面了解如何构建 Rust 程序和大型项目。
NiQin
更新于
2022-09-28 14:41:13+08:00
浏览数量:
40395
关键词/标签:
rust
rustdoc
rustdoc-book
rustdoc-手册
rust-crate-文档
学习如何为您的 crate 编写完美的文档。
标准 Rust 版本包含了名为 `rustdoc` 的工具。它的作用是为 Rust 项目生成文档,Rustdoc 接受一个 crate 根目录或者一个 markdown 文件作为参数,生成 HTML,CSS 和 JavaScript 文件。
NiQin
更新于
2022-09-27 19:50:31+08:00
浏览数量:
93525
关键词/标签:
rust
rust-cookbook
rust-code-examples
rust-示例
《Rust Cookbook 中文版》:
-
* 是 Rust 程序设计语言([Rust 官方教程简体中文版](https://rust-lang.niqin.com/zh-cn))的简要实例示例集合;
* 展示了在 Rust 生态系统中,使用各类 crate 来完成常见编程任务的良好实践。
了解更多关于《Rust Cookbook 中文版》一书的信息,请阅读[关于本书](https://rust-cookbook.niqin.com/zh-cn/about.html),包括:如何阅读本书的提示、如何使用实例示例,以及关于注释的约定。
NiQin
更新于
2022-07-28 21:23:02+08:00
浏览数量:
60351
关键词/标签:
rust
rust-web
tide
web-framework
Tide 是小型而实用的 Rust web 应用程序框架,为快速开发而构建。它提供了一组健壮的特性,使得构建异步 web 应用程序和 API 更加容易、更为有趣。
Tide 指导手册正在编写中,会随着实践的推移逐步完善。
本书中所有的实例请参阅 [Tide 实例项目](https://github.com/http-rs/tide-book/tree/main/examples)。
> 💥 Tide 在\*\*生产环境的实践“脚手架”\*\*项目,请参阅 **[surfer](https://github.com/zzy/surfer)**[(github 仓库)](https://github.com/zzy/surfer)(将持续升级):
>
> - 纯粹 Rust 技术栈实现的博客系统,有兴趣请访问[演示站点 1](https://niqin.com),以及[演示站点 2](https://gaidun.com):。
> - 后端(backend)主要提供 graphql 服务,使用了 tide, async-graphql, jsonwebtoken, mongodb 等相关 crate。
> - 前端(frontend)提供 web 应用服务,使用了 tide, rhai, surf, graphql_client, handlebars-rust, cookie 等相关 crate。
>
> 💥 关于清洁的模板项目,采用了**纯粹的 Rust 技术栈**。包括(将持续升级):
>
> - [Rust](https://www.rust-lang.org) - [中文文档](https://rust-lang.niqin.com)
> - [Tide](https://crates.io/crates/tide) - [中文文档](https://tide-book.niqin.com)
> - [async-graphql](https://crates.io/crates/async-graphql) - [中文文档](https://async-graphql.niqin.com)
> - [mongodb & mongo-rust-driver](https://crates.io/crates/mongodb)
> - [Surf](https://crates.io/crates/surf)
> - [graphql_client](https://crates.io/crates/graphql_client)
> - [handlebars-rust](https://crates.io/crates/handlebars)
> - [jsonwebtoken](https://crates.io/crates/jsonwebtoken)
> - [cookie-rs](https://crates.io/crates/cookie)
>
> 最简单但完全的示例项目,请参阅 github 仓库 **<a href="https://github.com/zzy/tide-async-graphql-mongodb">tide-async-graphql-mongodb</a>**。目前实现了如下功能(将持续升级):
>
> - 用户注册
> - 使用 PBKDF2 对密码进行加密(salt)和散列(hash)运算
> - 整合 JWT 鉴权的用户登录
> - 密码修改
> - 资料更新
> - 用户查询和变更
> - 项目查询和变更
> - 使用基于 Rust 实现 graphql-client 获取 GraphQL 服务端数据
> - 渲染 GraphQL 数据到 handlebars-rust 模板引擎
NiQin
更新于
2022-05-11 22:49:35+08:00
浏览数量:
114126
关键词/标签:
rust
rust-examples
rust-by-example
Rust 是一门注重安全(safety)、速度(speed)和并发(concurrency)的现代系统编程语言。Rust 通过内存安全来实现以上目标,但不使用垃圾回收机制(garbage collection, GC)。
《通过例子学 Rust》(Rust By Example, RBE)内容由一系列可运行的实例组成,通过这些例子阐明了各种 Rust 的概念和基本库。想获取这些例子外的更多内容,不要忘了安装 Rust 到本地并查阅官方标准库文档。另外为了满足您的好奇心,您还可以查阅本网站的源代码。
现在让我们开始学习吧!
* Hello World - 从经典的 “Hello World” 程序开始学习。
* 原生类型 - 学习有符号整型,无符号整型和其他原生类型。
* 自定义类型 - 结构体 struct 和 枚举 enum。
* 变量绑定 - 变量绑定,作用域,变量遮蔽。
* 类型系统 - 学习改变和定义类型。
* 类型转换
* 表达式
* 流程控制 - if/else,for,以及其他流程控制有关内容。
* 函数 - 学习方法、闭包和高阶函数。
* 模块 - 使用模块来组织代码。
* Crate - crate 是 Rust 中的编译单元。学习创建一个库。
* Cargo - 学习官方的 Rust 包管理工具的一些基本功能。
* 属性 - 属性是应用于某些模块、crate 或项的元数据(metadata)。
* 泛型 - 学习编写能够适用于多种类型参数的函数或数据类型。
* 作用域规则 - 作用域在所有权(ownership)、借用(borrowing)和生命周期(lifetime)中起着重要作用。
* 特性 trait - trait 是对未知类型(Self)定义的方法集。
* 宏
* 错误处理 - 学习 Rust 语言处理失败的方式。
* 标准库类型 - 学习 std 标准库提供的一些自定义类型。
* 标准库更多介绍 - 更多关于文件处理、线程的自定义类型。
* 测试 - Rust 语言的各种测试手段。
* 不安全操作
* 兼容性
* 补充 - 文档和基准测试
NiQin
更新于
2022-05-11 22:37:10+08:00
浏览数量:
220926
关键词/标签:
rust
rhai
embedded-scripting
embedded-scripting-for-rust
Rhai is an embedded scripting language and evaluation engine for Rust that gives a safe and easy way
to add scripting to any application.
Targets and builds
-
* All CPU and O/S targets supported by Rust, including:
* WebAssembly (WASM)
* `no-std`
* Minimum Rust version 1.57
Standard features
-
* Simple language similar to JavaScript+Rust with dynamic typing.
* Fairly efficient evaluation (1 million iterations in 0.3 sec on a single-core, 2.3 GHz Linux VM).
* Tight integration with native Rust functions and types, including getters/setters, methods and indexers.
* Freely pass Rust values into a script as variables/constants via an external Scope - all clonable Rust types are supported; no need to implement any special trait. Or tap directly into the variable resolution process.
* Built-in support for most common data types including booleans, integers, floating-point numbers (including Decimal), strings, Unicode characters, arrays (including packed byte arrays) and object maps.
* Easily call a script-defined function from Rust.
* Relatively little unsafe code (yes there are some for performance reasons).
* Few dependencies - currently only smallvec, num-traits, ahash, bitflags and smartstring.
* Re-entrant scripting engine can be made Send + Sync (via the sync feature).
* Compile once to AST form for repeated evaluations.
* Scripts are optimized (useful for template-based machine-generated scripts).
* Easy custom API development via plugins system powered by procedural macros.
* Function overloading and operator overloading.
* Dynamic dispatch via function pointers with additional support for currying.
* Closures (anonymous functions) that can capture shared values.
* Some syntactic support for object-oriented programming (OOP).
* Organize code base with dynamically-loadable modules, optionally overriding the resolution process.
* Serialization/deserialization support via serde (requires the serde feature).
* Support for minimal builds by excluding unneeded language features.
* A debugging interface.
Protected against attacks
-
* Don't Panic guarantee - Any panic is a bug. Rhai subscribes to the motto that a library should never panic the host system, and is coded with this in mind.
* Sand-boxed - the scripting engine, if declared immutable, cannot mutate the containing environment unless explicitly permitted.
* Rugged - protected against malicious attacks (such as stack-overflow, over-sized data, and runaway scripts etc.) that may come from untrusted third-party user-land scripts.
* Track script evaluation progress and manually terminate a script run.
* Passes Miri.
For those who actually want their own language
-
* Use as a DSL.
* Disable certain language features such as looping.
* Further restrict the language by surgically disabling keywords and operators.
* Define custom operators.
* Extend the language with custom syntax.
NiQin
更新于
2022-05-11 22:11:28+08:00
浏览数量:
136331
关键词/标签:
rust
rust-book
empowerment
赋能
虽然不是那么明显,但 Rust 程序设计语言的本质在于 **赋能**(*empowerment*):无论你现在编写的是何种代码,Rust 能让你在更为广泛的编程领域走得更远,写出自信。
比如,“系统层面”(“systems-level”)的工作,涉及内存管理、数据表示和并发等底层细节。从传统角度来看,这是一个神秘的编程领域,只为浸润多年的极少数人所触及,也只有他们能避开那些臭名昭著的陷阱。即使谨慎的实践者,亦唯恐代码出现漏洞、崩溃或损坏。
Rust 破除了这些障碍,其消除了旧的陷阱并提供了伴你一路同行的友好、精良的工具。想要 “深入” 底层控制的程序员可以使用 Rust,无需冒着常见的崩溃或安全漏洞的风险,也无需学习时常改变的工具链的最新知识。其语言本身更是被设计为自然而然的引导你编写出在运行速度和内存使用上都十分高效的可靠代码。
已经在从事编写底层代码的程序员可以使用 Rust 来提升抱负。例如,在 Rust 中引入并行是相对低风险的操作:编译器会为你捕获经典的错误。同时你可以自信的采取更为积极的优化,而不会意外引入崩溃或漏洞。
但 Rust 并不局限于底层系统编程。其表现力和工效足以令人愉悦的编写出 CLI 应用、web server 和很多其他类型的代码 —— 在本书中你会看到两个简单示例。使用 Rust 能将你在一个领域中学习的技能延伸到另一个领域;你可以学习 Rust 来编写 web 应用,接着将同样的技能应用到你的 Raspberry Pi(树莓派)上。
本书全面介绍了 Rust 为用户赋予的能力。其内容平易近人,致力于帮助你提升 Rust 的知识,并且提升你作为程序员整体的理解与自信。那么让我们准备深入学习 Rust 吧(打开新世界的大门 :)) —— 欢迎加入 Rust 社区!
— Nicholas Matsakis 和 Aaron Turon