diff options
| author | Brian Anderson <banderson@mozilla.com> | 2015-03-13 15:28:35 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2015-03-23 14:40:26 -0700 |
| commit | e9019101a82dd7f61dcdcd52bcc0123d5ed25d22 (patch) | |
| tree | 6553b47da56745ce8cab9e17265bba143608aa97 /src/doc | |
| parent | df290f127e923e0aacfe8223dd77f0fa222f0bc8 (diff) | |
| download | rust-e9019101a82dd7f61dcdcd52bcc0123d5ed25d22.tar.gz rust-e9019101a82dd7f61dcdcd52bcc0123d5ed25d22.zip | |
Add #![feature] attributes to doctests
Diffstat (limited to 'src/doc')
| -rw-r--r-- | src/doc/reference.md | 6 | ||||
| -rw-r--r-- | src/doc/trpl/concurrency.md | 5 | ||||
| -rw-r--r-- | src/doc/trpl/ffi.md | 8 | ||||
| -rw-r--r-- | src/doc/trpl/iterators.md | 2 | ||||
| -rw-r--r-- | src/doc/trpl/method-syntax.md | 3 | ||||
| -rw-r--r-- | src/doc/trpl/more-strings.md | 1 | ||||
| -rw-r--r-- | src/doc/trpl/standard-input.md | 4 | ||||
| -rw-r--r-- | src/doc/trpl/testing.md | 2 | ||||
| -rw-r--r-- | src/doc/trpl/traits.md | 6 | ||||
| -rw-r--r-- | src/doc/trpl/unsafe.md | 5 |
10 files changed, 39 insertions, 3 deletions
diff --git a/src/doc/reference.md b/src/doc/reference.md index 415ec4e4fbf..07df3bdad34 100644 --- a/src/doc/reference.md +++ b/src/doc/reference.md @@ -816,8 +816,7 @@ may optionally begin with any number of `attributes` that apply to the containing module. Attributes on the anonymous crate module define important metadata that influences the behavior of the compiler. -```{.rust} -# #![allow(unused_attribute)] +```no_run // Crate name #![crate_name = "projx"] @@ -1020,6 +1019,7 @@ Use declarations support a number of convenient shortcuts: An example of `use` declarations: ``` +# #![feature(core)] use std::iter::range_step; use std::option::Option::{Some, None}; use std::collections::hash_map::{self, HashMap}; @@ -1080,6 +1080,7 @@ declarations. An example of what will and will not work for `use` items: ``` +# #![feature(core)] # #![allow(unused_imports)] use foo::core::iter; // good: foo is at the root of the crate use foo::baz::foobaz; // good: foo is at the root of the crate @@ -1781,6 +1782,7 @@ functions, with the exception that they may not have a body and are instead terminated by a semicolon. ``` +# #![feature(libc)] extern crate libc; use libc::{c_char, FILE}; diff --git a/src/doc/trpl/concurrency.md b/src/doc/trpl/concurrency.md index 4a16db63950..9c86d2d3b84 100644 --- a/src/doc/trpl/concurrency.md +++ b/src/doc/trpl/concurrency.md @@ -88,6 +88,7 @@ When `guard` goes out of scope, it will block execution until the thread is finished. If we didn't want this behaviour, we could use `thread::spawn()`: ``` +# #![feature(old_io, std_misc)] use std::thread; use std::old_io::timer; use std::time::Duration; @@ -146,6 +147,7 @@ As an example, here is a Rust program that would have a data race in many languages. It will not compile: ```ignore +# #![feature(old_io, std_misc)] use std::thread; use std::old_io::timer; use std::time::Duration; @@ -185,6 +187,7 @@ only one person at a time can mutate what's inside. For that, we can use the but for a different reason: ```ignore +# #![feature(old_io, std_misc)] use std::thread; use std::old_io::timer; use std::time::Duration; @@ -229,6 +232,7 @@ guard across thread boundaries, which gives us our error. We can use `Arc<T>` to fix this. Here's the working version: ``` +# #![feature(old_io, std_misc)] use std::sync::{Arc, Mutex}; use std::thread; use std::old_io::timer; @@ -254,6 +258,7 @@ handle is then moved into the new thread. Let's examine the body of the thread more closely: ``` +# #![feature(old_io, std_misc)] # use std::sync::{Arc, Mutex}; # use std::thread; # use std::old_io::timer; diff --git a/src/doc/trpl/ffi.md b/src/doc/trpl/ffi.md index 018f35337f3..695279e2d5b 100644 --- a/src/doc/trpl/ffi.md +++ b/src/doc/trpl/ffi.md @@ -12,6 +12,7 @@ The following is a minimal example of calling a foreign function which will compile if snappy is installed: ```no_run +# #![feature(libc)] extern crate libc; use libc::size_t; @@ -45,6 +46,7 @@ keeping the binding correct at runtime. The `extern` block can be extended to cover the entire snappy API: ```no_run +# #![feature(libc)] extern crate libc; use libc::{c_int, size_t}; @@ -80,6 +82,7 @@ length is number of elements currently contained, and the capacity is the total the allocated memory. The length is less than or equal to the capacity. ``` +# #![feature(libc)] # extern crate libc; # use libc::{c_int, size_t}; # unsafe fn snappy_validate_compressed_buffer(_: *const u8, _: size_t) -> c_int { 0 } @@ -104,6 +107,7 @@ required capacity to hold the compressed output. The vector can then be passed t the true length after compression for setting the length. ``` +# #![feature(libc)] # extern crate libc; # use libc::{size_t, c_int}; # unsafe fn snappy_compress(a: *const u8, b: size_t, c: *mut u8, @@ -130,6 +134,7 @@ Decompression is similar, because snappy stores the uncompressed size as part of format and `snappy_uncompressed_length` will retrieve the exact buffer size required. ``` +# #![feature(libc)] # extern crate libc; # use libc::{size_t, c_int}; # unsafe fn snappy_uncompress(compressed: *const u8, @@ -408,6 +413,7 @@ global state. In order to access these variables, you declare them in `extern` blocks with the `static` keyword: ```no_run +# #![feature(libc)] extern crate libc; #[link(name = "readline")] @@ -426,6 +432,7 @@ interface. To do this, statics can be declared with `mut` so we can mutate them. ```no_run +# #![feature(libc)] extern crate libc; use std::ffi::CString; @@ -458,6 +465,7 @@ calling foreign functions. Some foreign functions, most notably the Windows API, conventions. Rust provides a way to tell the compiler which convention to use: ``` +# #![feature(libc)] extern crate libc; #[cfg(all(target_os = "win32", target_arch = "x86"))] diff --git a/src/doc/trpl/iterators.md b/src/doc/trpl/iterators.md index 33dc1ba07ca..8d7b1c3bd83 100644 --- a/src/doc/trpl/iterators.md +++ b/src/doc/trpl/iterators.md @@ -246,6 +246,7 @@ These two basic iterators should serve you well. There are some more advanced iterators, including ones that are infinite. Like `count`: ```rust +# #![feature(core)] std::iter::count(1, 5); ``` @@ -294,6 +295,7 @@ has no side effect on the original iterator. Let's try it out with our infinite iterator from before, `count()`: ```rust +# #![feature(core)] for i in std::iter::count(1, 5).take(5) { println!("{}", i); } diff --git a/src/doc/trpl/method-syntax.md b/src/doc/trpl/method-syntax.md index 0ca42c3b12d..8cb16f7ab33 100644 --- a/src/doc/trpl/method-syntax.md +++ b/src/doc/trpl/method-syntax.md @@ -23,6 +23,7 @@ the ability to use this *method call syntax* via the `impl` keyword. Here's how it works: ```{rust} +# #![feature(core)] struct Circle { x: f64, y: f64, @@ -87,6 +88,7 @@ original example, `foo.bar().baz()`? This is called 'method chaining', and we can do it by returning `self`. ``` +# #![feature(core)] struct Circle { x: f64, y: f64, @@ -164,6 +166,7 @@ have method overloading, named arguments, or variable arguments. We employ the builder pattern instead. It looks like this: ``` +# #![feature(core)] struct Circle { x: f64, y: f64, diff --git a/src/doc/trpl/more-strings.md b/src/doc/trpl/more-strings.md index 6567cd448f9..4b2281badd7 100644 --- a/src/doc/trpl/more-strings.md +++ b/src/doc/trpl/more-strings.md @@ -148,6 +148,7 @@ Rust provides iterators for each of these situations: Usually, the `graphemes()` method on `&str` is what you want: ``` +# #![feature(unicode)] let s = "u͔n͈̰̎i̙̮͚̦c͚̉o̼̩̰͗d͔̆̓ͥé"; for l in s.graphemes(true) { diff --git a/src/doc/trpl/standard-input.md b/src/doc/trpl/standard-input.md index 794b1df7563..0ef286ac069 100644 --- a/src/doc/trpl/standard-input.md +++ b/src/doc/trpl/standard-input.md @@ -5,7 +5,7 @@ we haven't seen before. Here's a simple program that reads some input, and then prints it back out: ```{rust,ignore} -fn main() { +corefn main() { println!("Type something!"); let input = std::old_io::stdin().read_line().ok().expect("Failed to read line"); @@ -28,6 +28,7 @@ Since writing the fully qualified name all the time is annoying, we can use the `use` statement to import it in: ```{rust} +# #![feature(old_io)] use std::old_io::stdin; stdin(); @@ -37,6 +38,7 @@ However, it's considered better practice to not import individual functions, but to import the module, and only use one level of qualification: ```{rust} +# #![feature(old_io)] use std::old_io; old_io::stdin(); diff --git a/src/doc/trpl/testing.md b/src/doc/trpl/testing.md index 72e9ec9f750..8fb08e1c6cf 100644 --- a/src/doc/trpl/testing.md +++ b/src/doc/trpl/testing.md @@ -546,6 +546,8 @@ is an opaque "black box" to the optimizer and so forces it to consider any argument as used. ```rust +# #![feature(test)] + extern crate test; # fn main() { diff --git a/src/doc/trpl/traits.md b/src/doc/trpl/traits.md index 676f1cc425a..fe26fc5e1eb 100644 --- a/src/doc/trpl/traits.md +++ b/src/doc/trpl/traits.md @@ -4,6 +4,7 @@ Do you remember the `impl` keyword, used to call a function with method syntax? ```{rust} +# #![feature(core)] struct Circle { x: f64, y: f64, @@ -21,6 +22,7 @@ Traits are similar, except that we define a trait with just the method signature, then implement the trait for that struct. Like this: ```{rust} +# #![feature(core)] struct Circle { x: f64, y: f64, @@ -84,6 +86,7 @@ which implements `HasArea` will have an `.area()` method. Here's an extended example of how this works: ```{rust} +# #![feature(core)] trait HasArea { fn area(&self) -> f64; } @@ -225,6 +228,7 @@ If we add a `use` line right above `main` and make the right things public, everything is fine: ```{rust} +# #![feature(core)] use shapes::HasArea; mod shapes { @@ -408,6 +412,7 @@ but instead, we found a floating-point variable. We need a different bound. `Flo to the rescue: ``` +# #![feature(std_misc)] use std::num::Float; fn inverse<T: Float>(x: T) -> Result<T, String> { @@ -423,6 +428,7 @@ from the `Float` trait. Both `f32` and `f64` implement `Float`, so our function works just fine: ``` +# #![feature(std_misc)] # use std::num::Float; # fn inverse<T: Float>(x: T) -> Result<T, String> { # if x == Float::zero() { return Err("x cannot be zero!".to_string()) } diff --git a/src/doc/trpl/unsafe.md b/src/doc/trpl/unsafe.md index 11f0b8e1ddb..2116976d55a 100644 --- a/src/doc/trpl/unsafe.md +++ b/src/doc/trpl/unsafe.md @@ -187,6 +187,7 @@ As an example, we give a reimplementation of owned boxes by wrapping reimplementation is as safe as the `Box` type. ``` +# #![feature(libc)] #![feature(unsafe_destructor)] extern crate libc; @@ -443,6 +444,7 @@ The function marked `#[start]` is passed the command line parameters in the same format as C: ``` +# #![feature(libc)] #![feature(lang_items, start, no_std)] #![no_std] @@ -470,6 +472,7 @@ correct ABI and the correct name, which requires overriding the compiler's name mangling too: ```ignore +# #![feature(libc)] #![feature(no_std)] #![no_std] #![no_main] @@ -526,6 +529,7 @@ As an example, here is a program that will calculate the dot product of two vectors provided from C, using idiomatic Rust practices. ``` +# #![feature(libc, core)] #![feature(lang_items, start, no_std)] #![no_std] @@ -650,6 +654,7 @@ and one for deallocation. A freestanding program that uses the `Box` sugar for dynamic allocations via `malloc` and `free`: ``` +# #![feature(libc)] #![feature(lang_items, box_syntax, start, no_std)] #![no_std] |
