From db2f308a46fe4e66311ed7d05f2b4f7597c6a7b3 Mon Sep 17 00:00:00 2001 From: Nick Hamann Date: Mon, 20 Apr 2015 20:45:02 -0500 Subject: [PATCH 1/8] Add two examples for Path::new --- src/libstd/path.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/libstd/path.rs b/src/libstd/path.rs index 1ad1508ae2d0..c5646e014eba 100644 --- a/src/libstd/path.rs +++ b/src/libstd/path.rs @@ -1248,6 +1248,13 @@ fn as_u8_slice(&self) -> &[u8] { /// use std::path::Path; /// /// Path::new("foo.txt"); + /// + /// // Strings work too + /// let s = String::from("bar.txt"); + /// let p = Path::new(&s); + /// + /// // As do other Paths + /// Path::new(&p); /// ``` #[stable(feature = "rust1", since = "1.0.0")] pub fn new + ?Sized>(s: &S) -> &Path { From e178495a5e3db9b8dcafce1ec9bbac4906bb92ad Mon Sep 17 00:00:00 2001 From: Nick Hamann Date: Mon, 20 Apr 2015 21:01:13 -0500 Subject: [PATCH 2/8] Address some nits --- src/libstd/path.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libstd/path.rs b/src/libstd/path.rs index c5646e014eba..b4a359080d78 100644 --- a/src/libstd/path.rs +++ b/src/libstd/path.rs @@ -1249,11 +1249,11 @@ fn as_u8_slice(&self) -> &[u8] { /// /// Path::new("foo.txt"); /// - /// // Strings work too + /// // Strings work too: /// let s = String::from("bar.txt"); /// let p = Path::new(&s); /// - /// // As do other Paths + /// // As do other `Path`s: /// Path::new(&p); /// ``` #[stable(feature = "rust1", since = "1.0.0")] From ba4d55d130f9577eddf577b9bf99562a8c65857b Mon Sep 17 00:00:00 2001 From: Nick Hamann Date: Tue, 21 Apr 2015 01:15:51 -0500 Subject: [PATCH 3/8] Separate code into two code blocks --- src/libstd/path.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/libstd/path.rs b/src/libstd/path.rs index b4a359080d78..0a13c77018f7 100644 --- a/src/libstd/path.rs +++ b/src/libstd/path.rs @@ -1248,12 +1248,13 @@ fn as_u8_slice(&self) -> &[u8] { /// use std::path::Path; /// /// Path::new("foo.txt"); + /// ``` /// - /// // Strings work too: + /// You can create `Path`s from `String`s, or even other `Path`s: + /// + /// ``` /// let s = String::from("bar.txt"); /// let p = Path::new(&s); - /// - /// // As do other `Path`s: /// Path::new(&p); /// ``` #[stable(feature = "rust1", since = "1.0.0")] From 46462c7b5f33f33a338ee7ab40476be2234e2851 Mon Sep 17 00:00:00 2001 From: FuGangqiang Date: Fri, 24 Apr 2015 23:56:02 +0800 Subject: [PATCH 4/8] fix doc --- src/doc/trpl/getting-started.md | 2 +- src/doc/trpl/glossary.md | 2 +- src/doc/trpl/primitive-types.md | 14 +++++++------- src/doc/trpl/variable-bindings.md | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/doc/trpl/getting-started.md b/src/doc/trpl/getting-started.md index 555d40e65970..d0825e543f2c 100644 --- a/src/doc/trpl/getting-started.md +++ b/src/doc/trpl/getting-started.md @@ -1,5 +1,5 @@ % Getting Started This first section of the book will get you going with Rust and its tooling. -First, we’ll install Rust. Then: the classic ‘Hello World’ program. Finally, +First, we’ll install Rust. Then, the classic ‘Hello World’ program. Finally, we’ll talk about Cargo, Rust’s build system and package manager. diff --git a/src/doc/trpl/glossary.md b/src/doc/trpl/glossary.md index 97898324847e..9845fcbdcd17 100644 --- a/src/doc/trpl/glossary.md +++ b/src/doc/trpl/glossary.md @@ -19,7 +19,7 @@ In the example above `x` and `y` have arity 2. `z` has arity 3. When a compiler is compiling your program, it does a number of different things. One of the things that it does is turn the text of your program into an -'abstract syntax tree,' or 'AST.' This tree is a representation of the +‘abstract syntax tree’, or‘AST’. This tree is a representation of the structure of your program. For example, `2 + 3` can be turned into a tree: ```text diff --git a/src/doc/trpl/primitive-types.md b/src/doc/trpl/primitive-types.md index e4af03869d1d..aca6e327c3bc 100644 --- a/src/doc/trpl/primitive-types.md +++ b/src/doc/trpl/primitive-types.md @@ -62,14 +62,14 @@ let y = 1.0; // y has type f64 Here’s a list of the different numeric types, with links to their documentation in the standard library: +* [i8](../std/primitive.i8.html) * [i16](../std/primitive.i16.html) * [i32](../std/primitive.i32.html) * [i64](../std/primitive.i64.html) -* [i8](../std/primitive.i8.html) +* [u8](../std/primitive.u8.html) * [u16](../std/primitive.u16.html) * [u32](../std/primitive.u32.html) * [u64](../std/primitive.u64.html) -* [u8](../std/primitive.u8.html) * [isize](../std/primitive.isize.html) * [usize](../std/primitive.usize.html) * [f32](../std/primitive.f32.html) @@ -82,12 +82,12 @@ Let’s go over them by category: Integer types come in two varieties: signed and unsigned. To understand the difference, let’s consider a number with four bits of size. A signed, four-bit number would let you store numbers from `-8` to `+7`. Signed numbers use -‘two’s compliment representation’. An unsigned four bit number, since it does +“two’s compliment representation”. An unsigned four bit number, since it does not need to store negatives, can store values from `0` to `+15`. Unsigned types use a `u` for their category, and signed types use `i`. The `i` is for ‘integer’. So `u8` is an eight-bit unsigned number, and `i8` is an -eight-bit signed number. +eight-bit signed number. ## Fixed size types @@ -103,7 +103,7 @@ and unsigned varieties. This makes for two types: `isize` and `usize`. ## Floating-point types -Rust also two floating point types: `f32` and `f64`. These correspond to +Rust also has two floating point types: `f32` and `f64`. These correspond to IEEE-754 single and double precision numbers. # Arrays @@ -241,8 +241,8 @@ println!("x is {}", x); Remember [before][let] when I said the left-hand side of a `let` statement was more powerful than just assigning a binding? Here we are. We can put a pattern on the left-hand side of the `let`, and if it matches up to the right-hand side, -we can assign multiple bindings at once. In this case, `let` "destructures," -or "breaks up," the tuple, and assigns the bits to three bindings. +we can assign multiple bindings at once. In this case, `let` “destructures” +or “breaks up” the tuple, and assigns the bits to three bindings. [let]: variable-bindings.html diff --git a/src/doc/trpl/variable-bindings.md b/src/doc/trpl/variable-bindings.md index d971e557a9a2..0ee34d4b91d0 100644 --- a/src/doc/trpl/variable-bindings.md +++ b/src/doc/trpl/variable-bindings.md @@ -1,6 +1,6 @@ % Variable Bindings -Vitually every non-’Hello World’ Rust program uses *variable bindings*. They +Virtually every non-‘Hello World’Rust program uses *variable bindings*. They look like this: ```rust From b66f858e8f7902ff9e293b10ce9439cb25d4ad6e Mon Sep 17 00:00:00 2001 From: Conrad Kleinespel Date: Sat, 25 Apr 2015 13:43:26 +0200 Subject: [PATCH 5/8] fix compiler plugins path in doc/reference.md --- src/doc/reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/doc/reference.md b/src/doc/reference.md index 059da8919257..787f59948e23 100644 --- a/src/doc/reference.md +++ b/src/doc/reference.md @@ -1976,7 +1976,7 @@ For any lint check `C`: The lint checks supported by the compiler can be found via `rustc -W help`, along with their default settings. [Compiler -plugins](book/plugins.html#lint-plugins) can provide additional lint checks. +plugins](book/compiler-plugins.html#lint-plugins) can provide additional lint checks. ```{.ignore} mod m1 { @@ -3646,4 +3646,4 @@ that have since been removed): pattern syntax [ffi]: book/ffi.html -[plugin]: book/plugins.html +[plugin]: book/compiler-plugins.html From 702f17566c7f4decdc9cfb4f67a03fe5b10f6454 Mon Sep 17 00:00:00 2001 From: Robin Kruppe Date: Sat, 25 Apr 2015 14:37:18 +0200 Subject: [PATCH 6/8] Audit reference manual: 3.2 Special unicode productions Mention non_ascii_idents feature gate and remove unused productions --- src/doc/reference.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/doc/reference.md b/src/doc/reference.md index 2f7ec6a999e1..73a817eded49 100644 --- a/src/doc/reference.md +++ b/src/doc/reference.md @@ -103,12 +103,14 @@ explicit codepoint lists. [^inputformat] ## Special Unicode Productions The following productions in the Rust grammar are defined in terms of Unicode -properties: `ident`, `non_null`, `non_star`, `non_eol`, `non_slash_or_star`, -`non_single_quote` and `non_double_quote`. +properties: `ident`, `non_null`, `non_eol`, `non_single_quote` and `non_double_quote`. ### Identifiers -The `ident` production is any nonempty Unicode string of the following form: +The `ident` production is any nonempty Unicode[^non_ascii_idents] string of the following form: + +[^non_ascii_idents]: Non-ASCII characters in identifiers are currently feature + gated. This is expected to improve soon. - The first character has property `XID_start` - The remaining characters have property `XID_continue` @@ -125,8 +127,6 @@ Some productions are defined by exclusion of particular Unicode characters: - `non_null` is any single Unicode character aside from `U+0000` (null) - `non_eol` is `non_null` restricted to exclude `U+000A` (`'\n'`) -- `non_star` is `non_null` restricted to exclude `U+002A` (`*`) -- `non_slash_or_star` is `non_null` restricted to exclude `U+002F` (`/`) and `U+002A` (`*`) - `non_single_quote` is `non_null` restricted to exclude `U+0027` (`'`) - `non_double_quote` is `non_null` restricted to exclude `U+0022` (`"`) From 2c2abe9a75b0a9d30b020df5a9e46e96cac89d57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Weso=C5=82ek?= Date: Sat, 25 Apr 2015 16:46:34 +0200 Subject: [PATCH 7/8] A number of spell-checking corrections. --- src/doc/trpl/README.md | 2 +- src/doc/trpl/closures.md | 2 +- src/doc/trpl/documentation.md | 2 +- src/doc/trpl/mutability.md | 2 +- src/doc/trpl/trait-objects.md | 2 +- src/doc/trpl/traits.md | 4 ++-- src/doc/trpl/variable-bindings.md | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/doc/trpl/README.md b/src/doc/trpl/README.md index 01ef88dde227..a892f67d571a 100644 --- a/src/doc/trpl/README.md +++ b/src/doc/trpl/README.md @@ -8,7 +8,7 @@ good at: embedding in other languages, programs with specific space and time requirements, and writing low-level code, like device drivers and operating systems. It improves on current languages targeting this space by having a number of compile-time safety checks that produce no runtime overhead, while -eliminating all data races. Rust also aims to achieve ‘zero-cost abstrations’ +eliminating all data races. Rust also aims to achieve ‘zero-cost abstractions’ even though some of these abstractions feel like those of a high-level language. Even then, Rust still allows precise control like a low-level language would. diff --git a/src/doc/trpl/closures.md b/src/doc/trpl/closures.md index 604dcb739df6..d7fa84761e52 100644 --- a/src/doc/trpl/closures.md +++ b/src/doc/trpl/closures.md @@ -294,7 +294,7 @@ is `Fn(i32) -> i32`. There’s one other key point here: because we’re bounding a generic with a trait, this will get monomorphized, and therefore, we’ll be doing static -dispatch into the closure. That’s pretty neat. In many langauges, closures are +dispatch into the closure. That’s pretty neat. In many languages, closures are inherently heap allocated, and will always involve dynamic dispatch. In Rust, we can stack allocate our closure environment, and statically dispatch the call. This happens quite often with iterators and their adapters, which often diff --git a/src/doc/trpl/documentation.md b/src/doc/trpl/documentation.md index 732521a0c606..b28343e7fb94 100644 --- a/src/doc/trpl/documentation.md +++ b/src/doc/trpl/documentation.md @@ -556,7 +556,7 @@ This sets a few different options, with a logo, favicon, and a root URL. ## Generation options -`rustdoc` also contains a few other options on the command line, for further customiziation: +`rustdoc` also contains a few other options on the command line, for further customization: - `--html-in-header FILE`: includes the contents of FILE at the end of the `...` section. diff --git a/src/doc/trpl/mutability.md b/src/doc/trpl/mutability.md index e7506dfe4fd7..816bfb179706 100644 --- a/src/doc/trpl/mutability.md +++ b/src/doc/trpl/mutability.md @@ -129,7 +129,7 @@ about it first. ## Field-level mutability -Mutabilty is a property of either a borrow (`&mut`) or a binding (`let mut`). +Mutability is a property of either a borrow (`&mut`) or a binding (`let mut`). This means that, for example, you cannot have a [`struct`][struct] with some fields mutable and some immutable: diff --git a/src/doc/trpl/trait-objects.md b/src/doc/trpl/trait-objects.md index 52f8cb335a93..c01129057418 100644 --- a/src/doc/trpl/trait-objects.md +++ b/src/doc/trpl/trait-objects.md @@ -155,7 +155,7 @@ A function that takes a trait object is not specialized to each of the types that implements `Foo`: only one copy is generated, often (but not always) resulting in less code bloat. However, this comes at the cost of requiring slower virtual function calls, and effectively inhibiting any chance of -inlining and related optimisations from occurring. +inlining and related optimizations from occurring. ### Why pointers? diff --git a/src/doc/trpl/traits.md b/src/doc/trpl/traits.md index 3e77d3c603ba..ea5d2ed711fe 100644 --- a/src/doc/trpl/traits.md +++ b/src/doc/trpl/traits.md @@ -184,7 +184,7 @@ won’t have its methods: ```rust,ignore let mut f = std::fs::File::open("foo.txt").ok().expect("Couldn’t open foo.txt"); let result = f.write("whatever".as_bytes()); -# result.unwrap(); // ignore the erorr +# result.unwrap(); // ignore the error ``` Here’s the error: @@ -203,7 +203,7 @@ use std::io::Write; let mut f = std::fs::File::open("foo.txt").ok().expect("Couldn’t open foo.txt"); let result = f.write("whatever".as_bytes()); -# result.unwrap(); // ignore the erorr +# result.unwrap(); // ignore the error ``` This will compile without error. diff --git a/src/doc/trpl/variable-bindings.md b/src/doc/trpl/variable-bindings.md index d971e557a9a2..50ad506e3a70 100644 --- a/src/doc/trpl/variable-bindings.md +++ b/src/doc/trpl/variable-bindings.md @@ -1,6 +1,6 @@ % Variable Bindings -Vitually every non-’Hello World’ Rust program uses *variable bindings*. They +Virtually every non-’Hello World’ Rust program uses *variable bindings*. They look like this: ```rust From 3e67b6bb6c5383674f58a637f93d6740bca6a7d7 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Sat, 25 Apr 2015 22:33:19 +0530 Subject: [PATCH 8/8] add import (fixup #24649) --- src/libstd/path.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libstd/path.rs b/src/libstd/path.rs index a52a3dbbef9a..2ceb60cc3aa9 100644 --- a/src/libstd/path.rs +++ b/src/libstd/path.rs @@ -1245,6 +1245,8 @@ fn as_u8_slice(&self) -> &[u8] { /// You can create `Path`s from `String`s, or even other `Path`s: /// /// ``` + /// use std::path::Path; + /// /// let s = String::from("bar.txt"); /// let p = Path::new(&s); /// Path::new(&p);