Update a-simple-web-app-in-rust-pt-1.md

This commit is contained in:
LeviDing
2018-01-23 22:57:30 +08:00
committed by GitHub
parent ad9d179782
commit 8fb41f6818
+16 -14
View File
@@ -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 这样一个编译语言来说没太大意义。所以除了宏指令以外,我不知道该如何表述它了。
---