Giter VIP home page Giter VIP logo

book-cn's Introduction

Rust 程序设计语言

Build Status LICENSE-MIT LICENSE-APACHE GitHub last commit GitHub contributors Locatized 100% rustwiki.org

Chinese translation of The Rust Programming Language

  • 鉴于目前网上的中文版已经滞后英文内容,所以重新开启本书翻译,跟进原书,本书是 Rust 中文翻译项目组的重点翻译项目。
  • 本文档已 100% 翻译成中文,最后更新时间为 2022-02-06。
  • 本仓库翻译内容包括 Rust 中文翻译项目组本身原有的翻译以及采用网上已有的开源的翻译版本(如:KaiserY/trpl-zh-cn 译本),我们尽可能避免不必要的重复劳动,我们对原译者感激不尽!

本仓库包含《Rust 程序设计语言》图书的源码。

可以从 No Starch 出版社购买本书的英文纸质图书

中文译版注:

  1. 中文出版书名为《Rust 权威指南》,可以在线上或线下购书平台购买。
  2. 出版的版本翻译独立于本仓库翻译。

在线版可以在本组织官网上阅读中文版支持同一页面中英双语切换)或在 Rust 官网上阅读英文版。另外在 Rust 官网的英文版在线阅读可以选择 stablebetanightly 三个不同的分支版本,这几个分支版本可能滞后于英文仓库的最新内容。

依赖

构建本书需要 mdBook,最好使用的版本和 rust-lang/rust这个文件中指定的版本一致。执行以下命令安装:

$ cargo install mdbook --vers [version-num]

构建

构建此书,请输入:

$ mdbook build

输出内容存放在 book 子目录中。可使用浏览器打开来查看内容。

Firefox:

$ firefox book/index.html                       # Linux
$ open -a "Firefox" book/index.html             # OS X
$ Start-Process "firefox.exe" .\book\index.html # Windows (PowerShell)
$ start firefox.exe .\book\index.html           # Windows (Cmd)

Chrome:

$ google-chrome book/index.html                 # Linux
$ open -a "Google Chrome" book/index.html       # OS X
$ Start-Process "chrome.exe" .\book\index.html  # Windows (PowerShell)
$ start chrome.exe .\book\index.html            # Windows (Cmd)

运行测试:

$ mdbook test

参与贡献

您的帮助,我们将感激不尽(We'd love your help)!请参见 CONTRIBUTING.md(英文原项目参与贡献指引 CONTRIBUTING-EN.md)。

翻译

我们很乐意翻译这本书!请参阅“翻译”标签(在英文原仓库)以加入当前正在进行的工作。新建一个 Issue,开始使用新语言!在我们合并任何内容之前,我们正在等待 mdbook 对多种语言的支持,只要支持后将随时可以开始!

拼写检查

要扫描源文件是否存在拼写错误,可以使用 ci 目录中的脚本 spellcheck.sh。这需要一个带有有效单词的字典文件,由 ci/dictionary.txt 提供。如果脚本产生误报(例如,使用了词语 BTreeMap 被脚本认为无效),则需要在 ci/dictionary.txt 中添加该单词(保持排序顺序以确保一致性)。

授权协议

《Rust 程序设计语言》(中文版与英文版 The Rust Programming Language 均) 使用以下两种协议的任一种进行授权:

可以根据自己选择来定。

除非您有另外说明,否则您在本仓库提交的任何贡献均按上述方式进行双重许可授权,就如 Apache 2.0 协议所规定那样,而无需附加任何其他条款或条件。

book-cn's People

Contributors

0xmohit avatar aaaxx avatar aaranxu avatar adamcdunlap avatar barbeque avatar brennx0r avatar butonly avatar carols10cents avatar clemensw avatar elahn avatar focksor avatar frewsxcv avatar jightuse avatar jturner314 avatar k4rtik avatar kberov avatar lalala-233 avatar lucis-fluxum avatar mandeep avatar michael88888888 avatar mind1949 avatar rayray avatar sighttview avatar spastorino avatar steveklabnik avatar trackers-lover avatar traffictse avatar yangfong avatar ykomatsu avatar zhanghandong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

book-cn's Issues

建议为 README 里的图标加上链接

image
这些都是支持 Markdown 链接写法的

[![Windows10-preview](https://img.shields.io/badge/Windows-10preview-blue?style=flat-square&logo=windows&logoColor=blue)](https://insider.windows.com/)  

Windows10-preview
image

定义枚举章节错误

如果使用 None 而不是 Some,需要告诉 Rust Option 是什么类型的,因为编译器只通过 None 值无法推断出 Some 成员保存的值的类型。

应该改为:
如果使用 None 而不是 Some,需要告诉 Rust Option 是什么类型的,因为编译器只通过 None 值无法推断出 None 成员保存的值的类型。

一个错误

猜数游戏
0.9.0成了0.6.0
中文:如果要使用 rand 版本 0.9.0 或 0.9.x 系列中的任何版本,则必须像这样更新 Cargo.toml 文件:

[dependencies]

----rand = "0.6.0"----
下一次运行 cargo build 时,Cargo 会从 registry 更新可用的 crate,并根据你指定的新版本重新计算。
英文:If you wanted to use rand version 0.9.0 or any version in the 0.9.x series, you’d have to update the Cargo.toml file to look like this instead:

[dependencies]
----rand = "0.9.0"----
The next time you run cargo build, Cargo will update the registry of crates available and reevaluate your rand requirements according to the new version you have specified.

词语重复

第三章 第二小节 data type 31 行
原文:

整数integer)是没有是没有小数部分的数字

不知道是否是重复出现了相同的词语呢?

读者反馈

感觉有写句子读起来不是中文的语序,有点怪怪的

比如

示例 4-5 中的元组代码有这样一个问题:我们必须将 String 返回给调用函数,以便在调用 calculate_length 后仍能使用 String,因为 String 被移动到了 calculate_length 内。

这个句子应该把因为移到前面去,不然读起来很怪

还有

下面是如何定义并使用一个(新的)calculate_length 函数,它以一个对象的引用作为参数而不是获取值的所有权:
文件名: src/main.rs

fn main() {
    let s1 = String::from("hello");

    let len = calculate_length(&s1);

    println!("The length of '{}' is {}.", s1, len);
}

fn calculate_length(s: &String) -> usize {
    s.len()
}

那一句话下面就是代码了,可以直接把”如何定义并使用“删去,要不然感觉很奇怪

集合翻译讨论

hash-map 翻译为 哈希 map 显得太怪异了,需要考虑优化,去除这种中英混杂的存在。

image


对于 vector,个人是一种保守看法,若是像隔壁微软那样玩,就太随意了。

image

链接遗漏

在数据类型(ch-03-02)这一章当中,未补充链接指向,导致源文本暴露。由于涉及翻译内容,我的能力无法补充,只能在此指出

image

遗漏的内容

image

链接需优化

位于数据类型(ch03-02),此处给出的链接在语言与可访问性方面,都不合适,需要更换

image

语句翻译小问题

谢谢你们为翻译文档所做的工作 💯 . 我在阅读的时候似乎发现了一点小问题:
第三章第一节 variables-and-mutability 124 行
原句:

所以变量隐藏可以我们就不必提出不同的名称

这里感觉语义不通顺,是否可以考虑改成

所以隐藏变量我们就可以不必提出不同的名称

内容更新

当前示例相比原文档,有部分内容需要同步一下。

个人出现了点问题,无法补充图片展示,需要更新的地方是 示例 7-3示例 7-6 报错信息(位于 ch07-03)


或许说,这种同步工作,通常定在某一周期,进行整体更新会更合。因此我只说出该差别的存在,并没有动手修改。

翻译错误?

原文是
image

目前的翻译是
image

其中,“这个方法位于结构体的命名空间中::: 语法用于关联函数和模块创建的命名空间。”建议改成“这个(关联)函数位于结构体的命名空间中,:: 语法用于关联函数和由模块创建的命名空间”。

我认为本句的原文中的“:”应该是个笔误,补个“由”可以消除“关联函数创建的命名空间和模块创建的命名空间”的歧义。

一个小错误

ch19-04 动态大小类型和Sized trait 第四行

因为直到运行时都不能知道大其小

语序有点小问题

《19.5 宏》一处翻译不准确的地方

原文:

The #[macro_export] annotation indicates that this macro should be made available whenever the crate in which the macro is defined is brought into scope.

目前的翻译:

无论何时导入定义了宏的包,#[macro_export] 标注说明宏应该是可用的。

建议的翻译:

#[macro_export] 标注说明,只要将定义了宏的crate引入作用域,宏就应当是可用的。

首先,这里翻译的语序不准确,至少影响理解。说实话只看翻译文本我完全不理解这句话是什么意思。

第二,crate不应该被翻译成“包”。这里应当区分cratepackage

第三,应该保留"导入作用域",因为下一句话:

Without this annotation, the macro can’t be brought into scope.

指“如果没有该标注,这个宏不能(随着crate一起)被引入作用域。”
如果去掉“引入作用域”会影响对下一句话的理解。

申请区域更新

这一句在我看来,太混乱了。另外,该区域在原文中有更新(指红框这一句),可以选择更新(并重译)。

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.