Update a-simple-web-app-in-rust-pt-1.md
This commit is contained in:
@@ -3,15 +3,15 @@
|
||||
> * 译文出自:[掘金翻译计划](https://github.com/xitu/gold-miner)
|
||||
> * 本文永久链接:[https://github.com/xitu/gold-miner/blob/master/TODO/a-simple-web-app-in-rust-pt-1.md](https://github.com/xitu/gold-miner/blob/master/TODO/a-simple-web-app-in-rust-pt-1.md)
|
||||
> * 译者:[LeopPro](https://github.com/LeopPro)
|
||||
> * 校对者:[pthtc](https://github.com/pthtc)
|
||||
> * 校对者:[pthtc](https://github.com/pthtc) [hippyk](https://github.com/hippyk)
|
||||
|
||||
# 使用 Rust 开发一个简单的 Web 应用,第 1 部分
|
||||
|
||||
## 1 简介 & 背景
|
||||
|
||||
站在一个经验丰富的但处于新生态系统的开发者的角度,开发一个小型的 Web 应用是什么感觉?请拭目以待。
|
||||
站在一个经验丰富但刚接触本生态系统的开发者的角度,使用 Rust 开发一个小型的 Web 应用是什么感觉呢?请继续阅读。
|
||||
|
||||
我第一次听说 Rust 的时候就对他产生了兴趣。一个支持宏的系统级语言,并且在高级抽象方面有非常大的成长空间。真棒!
|
||||
我第一次听说 Rust 的时候就对它产生了兴趣。一个支持宏的系统级语言,并且在高级抽象方面有成长空间。真棒!
|
||||
|
||||
到目前为止,我只写过关于 Rust 的博客,做了一些很基础的“Hello World”级程序。所以,我估计我的观点会欠一些火候。
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
好了,前言说完了,我们开始吧!
|
||||
|
||||
## 2 需求
|
||||
## 2 应用
|
||||
|
||||
我想构建的应用要实现我的一个简单需求:用一种无脑的方式记录我每天服药时间。我想我点一下主屏幕上的链接,让它记录这次访问,并且这将会储存为一份我服药时间的记录。
|
||||
|
||||
@@ -109,7 +109,7 @@ fn main() {
|
||||
`curl -LO https://static.rust-lang.org/rustup.sh`
|
||||
|
||||
|
||||
Ok,这事实上并不像我预想的那样,这个脚本完成了很多工作,比我预想的还要多。令我惊讶的是,`cargo` 居然是使用 `rustc` 安装的。
|
||||
Ok,这事实上并不像我预想的那样,这个脚本完成了很多工作,大部分都是我现在不想自己去做的。而我很想知道,`cargo` 是不是用 `rustc` 来安装的?
|
||||
|
||||
```
|
||||
$ which cargo
|
||||
@@ -138,7 +138,7 @@ Rust 包管理器
|
||||
update 更新 Cargo.lock 中的依赖项
|
||||
search 搜索注册过的 crates
|
||||
|
||||
运行 'cargo help <command>' 获取指定命令的更多帮助信息。
|
||||
执行 'cargo help <command>' 获取指定命令的更多帮助信息。
|
||||
```
|
||||
|
||||
Ok,我猜这看起来不错吧?我现在就开始用它。
|
||||
@@ -157,7 +157,7 @@ $ cargo new . --bin
|
||||
嗯……它不工作。
|
||||
|
||||
```
|
||||
$ cargo new -h
|
||||
$ cargo -h
|
||||
在 <路径> 处创建一个新的 Cargo 包。
|
||||
|
||||
用法:
|
||||
@@ -166,14 +166,16 @@ $ cargo new -h
|
||||
|
||||
选项:
|
||||
-h, --help 显示帮助信息
|
||||
--vcs <vcs> 指定初始化的版本管理系统
|
||||
使用 git 或者 hg
|
||||
--vcs <vcs> 为指定的版本管理系统(git 或 hg)
|
||||
初始化一个新仓库
|
||||
或者不使用版本管理系统(none)
|
||||
--bin 创建可执行文件工程而不是库工程
|
||||
--name <name> 设置结果包名
|
||||
-v, --verbose 使用详细的输出
|
||||
```
|
||||
|
||||
> 上述代码第一行中 `cargo -h` 应为作者笔误,实为 `cargo new -h`。(译者注)
|
||||
|
||||
嗯,它似乎不会按照我的预想去工作,我需要重建这个仓库。
|
||||
|
||||
```
|
||||
@@ -223,7 +225,7 @@ authors = ["Joel McCracken <mccracken.joel@gmail.com>"]
|
||||
git = "https://github.com/nickel-org/nickel.rs.git"
|
||||
```
|
||||
|
||||
我觉得这很容易理解。然而我不确定 `dependencies.nickel` 实际的**含义**是什么。`dependencies` 是 `nickel` 的一个哈希值么?但可以肯定的是,我们已经在工程中引进 Nickel 了,真棒!
|
||||
我觉得这很容易理解。然而我不确定 `dependencies.nickel` 实际的**含义**是什么。`dependencies` 是一个带有 `nickel` 键的哈希值么?但可以肯定的是,我们已经在工程中引进 Nickel 了,真棒!
|
||||
|
||||
|
||||
|
||||
@@ -383,9 +385,9 @@ src/main.rs:6 "Hello dear world!"
|
||||
想查看更多信息,请加上 --verbose 重新运行命令。
|
||||
```
|
||||
|
||||
根据报错信息,我**猜测**分号的有无是重要的。现在这产生了一个类型错误。哦,我有九成的把握肯定这里的 `()` 指的是“unit”,这是 Rust 中的空、未定义、或者未规定。我知道这不完全对,但是我猜这是有道理的。
|
||||
根据报错信息,我**猜测**分号的有无是重要的。现在这产生了一个类型错误。哦,我有九成的把握肯定这里的 `()` 指的是“unit”,这是 Rust 中的空、未定义、或者未规定。我知道这不完全对,但是我想这是讲得通的。
|
||||
|
||||
我**假设** Rust 会做类型推断。为什么没生效呢?或者为什么没在函数边界生效?嗯……
|
||||
我**假设** Rust 会做类型推断。编译器没这么做吗?还是只在函数边界附近没有做?嗯……
|
||||
|
||||
错误信息告诉我,编译器希望函数的返回值是“unit”,但是实际上返回值是一个静态字符串(这是啥?)。我已经看过函数返回值的语法了,我们看一看:
|
||||
|
||||
@@ -426,7 +428,7 @@ cargo run
|
||||
^C
|
||||
```
|
||||
|
||||
耶,它工作了!这一次 Rust 没有令人失望。我不知道是不是因为我对这些工具比较熟悉,还是我选择去多看文档,但是我乐在其中。**读**一门语言和**写**一门语言之间的差别非常的惊奇。虽然我理解这些代码示例,但是我仍然不能高效的编辑它们。
|
||||
耶,它工作了!这一次 Rust 没有令人失望。我不知道是不是因为我对这些工具更熟悉了,还是我选择去多看文档,但是我乐在其中。**读**一门语言和**写**一门语言之间的差别非常的惊奇。虽然我理解这些代码示例,但是我仍然不能高效的编辑它们。
|
||||
|
||||
—
|
||||
|
||||
@@ -447,7 +449,7 @@ cargo run
|
||||
|
||||
[1](#fnr.1) 我并不是想说,初学者的经验是没有价值的 —— 远非如此!我认为相比于经验丰富者而言,初学者经常会带来一些独到的见解,他们可能会注意到生态系统中的某些东西是非标准的。
|
||||
|
||||
[2](#fnr.2) 我通常说编译期指令,但是这对于 Rust 这样一个编译语言来说没什么意义。所以除了宏指令以外,我不知道该如何表述它了。
|
||||
[2](#fnr.2) 我通常说编译期指令,但是这对于 Rust 这样一个编译语言来说没太大意义。所以除了宏指令以外,我不知道该如何表述它了。
|
||||
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user