Skip to content

Commit

Permalink
Auto merge of #42165 - frewsxcv:rollup, r=frewsxcv
Browse files Browse the repository at this point in the history
Rollup of 8 pull requests

- Successful merges: #42016, #42122, #42144, #42145, #42151, #42152, #42160, #42163
- Failed merges:
  • Loading branch information
bors committed May 23, 2017
2 parents 2e91391 + aa7762f commit 852b7cb
Show file tree
Hide file tree
Showing 23 changed files with 319 additions and 186 deletions.
1 change: 0 additions & 1 deletion src/doc/unstable-book/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@
- [link_llvm_intrinsics](language-features/link-llvm-intrinsics.md)
- [linkage](language-features/linkage.md)
- [log_syntax](language-features/log-syntax.md)
- [loop_break_value](language-features/loop-break-value.md)
- [macro_reexport](language-features/macro-reexport.md)
- [macro_vis_matcher](language-features/macro-vis-matcher.md)
- [main](language-features/main.md)
Expand Down
20 changes: 20 additions & 0 deletions src/doc/unstable-book/src/language-features/attr-literals.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,25 @@ The tracking issue for this feature is: [#34981]

------------------------

At present, literals are only accepted as the value of a key-value pair in
attributes. What's more, only _string_ literals are accepted. This means that
literals can only appear in forms of `#[attr(name = "value")]` or
`#[attr = "value"]`.

The `attr_literals` unstable feature allows other types of literals to be used
in attributes. Here are some examples of attributes that can now be used with
this feature enabled:

+```rust,ignore
+#[attr]
+#[attr(true)]
+#[attr(ident)]
+#[attr(ident, 100, true, "true", ident = 100, ident = "hello", ident(100))]
+#[attr(100)]
+#[attr(enabled = true)]
+#[enabled(true)]
+#[attr("hello")]
+#[repr(C, align = 4)]
+#[repr(C, align(4))]
+```

23 changes: 23 additions & 0 deletions src/doc/unstable-book/src/language-features/catch-expr.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,26 @@ The tracking issue for this feature is: [#31436]
[#31436]: https://github.com/rust-lang/rust/issues/31436

------------------------

The `catch_expr` feature adds support for a `catch` expression. The `catch`
expression creates a new scope one can use the `?` operator in.

```rust
#![feature(catch_expr)]

use std::num::ParseIntError;

let result: Result<i32, ParseIntError> = do catch {
Ok("1".parse::<i32>()?
+ "2".parse::<i32>()?
+ "3".parse::<i32>()?)
};
assert_eq!(result, Ok(6));

let result: Result<i32, ParseIntError> = do catch {
Ok("1".parse::<i32>()?
+ "foo".parse::<i32>()?
+ "3".parse::<i32>()?)
};
assert!(result.is_err());
```
83 changes: 0 additions & 83 deletions src/doc/unstable-book/src/language-features/loop-break-value.md

This file was deleted.

37 changes: 37 additions & 0 deletions src/doc/unstable-book/src/language-features/on-unimplemented.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,42 @@ The tracking issue for this feature is: [#29628]

------------------------

The `on_unimplemented` feature provides the `#[rustc_on_unimplemented]`
attribute, which allows trait definitions to add specialized notes to error
messages when an implementation was expected but not found.

For example:

```rust,compile_fail
#![feature(on_unimplemented)]
#[rustc_on_unimplemented="a collection of type `{Self}` cannot be built from an \
iterator over elements of type `{A}`"]
trait MyIterator<A> {
fn next(&mut self) -> A;
}
fn iterate_chars<I: MyIterator<char>>(i: I) {
// ...
}
fn main() {
iterate_chars(&[1, 2, 3][..]);
}
```

When the user compiles this, they will see the following;

```txt
error[E0277]: the trait bound `&[{integer}]: MyIterator<char>` is not satisfied
--> <anon>:14:5
|
14 | iterate_chars(&[1, 2, 3][..]);
| ^^^^^^^^^^^^^ the trait `MyIterator<char>` is not implemented for `&[{integer}]`
|
= note: a collection of type `&[{integer}]` cannot be built from an iterator over elements of type `char`
= note: required by `iterate_chars`
error: aborting due to previous error
```

3 changes: 3 additions & 0 deletions src/libcollections/slice.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1410,6 +1410,9 @@ impl<T> [T] {

/// Converts `self` into a vector without clones or allocation.
///
/// The resulting vector can be converted back into a box via
/// `Vec<T>`'s `into_boxed_slice` method.
///
/// # Examples
///
/// ```
Expand Down
Loading

0 comments on commit 852b7cb

Please sign in to comment.