diff --git a/src/bootstrap/build/sanity.rs b/src/bootstrap/build/sanity.rs index 40f4c7076092d..6ac581a7c6949 100644 --- a/src/bootstrap/build/sanity.rs +++ b/src/bootstrap/build/sanity.rs @@ -79,7 +79,7 @@ pub fn check(build: &mut Build) { } // Make sure musl-root is valid if specified - if target.contains("musl") { + if target.contains("musl") && target.contains("x86_64") { match build.config.musl_root { Some(ref root) => { if fs::metadata(root.join("lib/libc.a")).is_err() { diff --git a/src/doc/book/vectors.md b/src/doc/book/vectors.md index f5a543d75b1b4..ceb6b3c003e52 100644 --- a/src/doc/book/vectors.md +++ b/src/doc/book/vectors.md @@ -115,6 +115,36 @@ for i in v { } ``` +Note: You cannot use the vector again once you have iterated by taking ownership of the vector. +You can iterate the vector multiple times by taking a reference to the vector whilst iterating. +For example, the following code does not compile. + +```rust,ignore +let mut v = vec![1, 2, 3, 4, 5]; + +for i in v { + println!("Take ownership of the vector and its element {}", i); +} + +for i in v { + println!("Take ownership of the vector and its element {}", i); +} +``` + +Whereas the following works perfectly, + +```rust +let mut v = vec![1, 2, 3, 4, 5]; + +for i in &v { + println!("This is a reference to {}", i); +} + +for i in &v { + println!("This is a reference to {}", i); +} +``` + Vectors have many more useful methods, which you can read about in [their API documentation][vec]. diff --git a/src/libcore/iter.rs b/src/libcore/iter.rs index d6bd9dbf4bde2..a730b9bd518da 100644 --- a/src/libcore/iter.rs +++ b/src/libcore/iter.rs @@ -1532,7 +1532,7 @@ pub trait Iterator { /// An iterator adaptor that applies a function, producing a single, final value. /// /// `fold()` takes two arguments: an initial value, and a closure with two - /// arguments: an 'accumulator', and an element. It returns the value that + /// arguments: an 'accumulator', and an element. The closure returns the value that /// the accumulator should have for the next iteration. /// /// The initial value is the value the accumulator will have on the first diff --git a/src/libcore/str/mod.rs b/src/libcore/str/mod.rs index a555b8592912e..2d898b50e0c3a 100644 --- a/src/libcore/str/mod.rs +++ b/src/libcore/str/mod.rs @@ -1095,8 +1095,6 @@ fn eq_slice(a: &str, b: &str) -> bool { /// faster than comparing each byte in a loop. #[inline] unsafe fn cmp_slice(a: &str, b: &str, len: usize) -> i32 { - // NOTE: In theory n should be libc::size_t and not usize, but libc is not available here - #[allow(improper_ctypes)] extern { fn memcmp(s1: *const i8, s2: *const i8, n: usize) -> i32; } memcmp(a.as_ptr() as *const i8, b.as_ptr() as *const i8, len) } diff --git a/src/libstd/build.rs b/src/libstd/build.rs index a1144a964fd37..c60ec4d3655b0 100644 --- a/src/libstd/build.rs +++ b/src/libstd/build.rs @@ -28,7 +28,7 @@ fn main() { } if target.contains("unknown-linux") { - if target.contains("musl") { + if target.contains("musl") && target.contains("x86_64") { println!("cargo:rustc-link-lib=static=unwind"); } else { println!("cargo:rustc-link-lib=dl"); diff --git a/src/test/rustdoc/issue-27362.rs b/src/test/rustdoc/issue-27362.rs index 179778fd1283f..b28fb7ec47a8c 100644 --- a/src/test/rustdoc/issue-27362.rs +++ b/src/test/rustdoc/issue-27362.rs @@ -10,6 +10,7 @@ // aux-build:issue-27362.rs // ignore-cross-compile +// ignore-test This test fails on beta/stable #32019 extern crate issue_27362; pub use issue_27362 as quux;