@@ -4,34 +4,34 @@ Version 1.30.0 (2018-10-25)
44Language
55--------
66- [ Procedural macros are now available.] [ 52081 ] These kinds of macros allow for
7- more powerful code generation, there is a [ new chapter available] [ proc-macros ]
8- in Rust Programming Language book that goes further in depth.
7+ more powerful code generation. There is a [ new chapter available] [ proc-macros ]
8+ in the Rust Programming Language book that goes further in depth.
99- [ You can now use keywords as identifiers using the raw identifiers
10- syntax (` r# ` ). ] [ 53236 ] e.g. ` let r#for = true; `
10+ syntax (` r# ` ), ] [ 53236 ] e.g. ` let r#for = true; `
1111- [ Using anonymous parameters in traits is now deprecated with a warning and
1212 will be a hard error in the 2018 edition.] [ 53272 ]
1313- [ You can now use ` crate ` in paths.] [ 54404 ] This allows you to refer to the
14- crate root in the path. e.g. ` use crate::foo; ` refers to ` foo ` in ` src/lib.rs ` .
15- - [ Using a external crate now no longer requires being prefixed with ` :: ` .] [ 54404 ]
16- e.g. previously using a external crate in a module without a use statement
17- required ` let json = ::serde_json::from_str(foo); ` can now be written
14+ crate root in the path, e.g. ` use crate::foo; ` refers to ` foo ` in ` src/lib.rs ` .
15+ - [ Using a external crate no longer requires being prefixed with ` :: ` .] [ 54404 ]
16+ Previously, using a external crate in a module without a use statement
17+ required ` let json = ::serde_json::from_str(foo); ` but can now be written
1818 as ` let json = serde_json::from_str(foo); ` .
1919- [ You can now apply the ` #[used] ` attribute to static items to prevent the
20- compiler from optimising them away even if they appear to be unused. ] [ 51363 ]
20+ compiler from optimising them away, even if they appear to be unused, ] [ 51363 ]
2121 e.g. ` #[used] static FOO: u32 = 1; `
2222- [ You can now import and reexport macros from other crates with the ` use `
2323 syntax.] [ 50911 ] Macros exported with ` #[macro_export] ` are now placed into
2424 the root module of the crate. If your macro relies on calling other local
25- macros it is recommended to export with the
26- ` #[macro_export(local_inner_macros)] ` attribute so that users won't have to
27- import those macros.
28- - [ ` mod.rs ` files are now optional.] [ 54146 ] Previously if you had a ` foo ` module
25+ macros, it is recommended to export with the
26+ ` #[macro_export(local_inner_macros)] ` attribute so users won't have to import
27+ those macros.
28+ - [ ` mod.rs ` files are now optional.] [ 54146 ] Previously, if you had a ` foo ` module
2929 with a ` bar ` submodule, you would have ` src/foo/mod.rs ` and ` src/foo/bar.rs ` .
3030 Now you can have ` src/foo.rs ` and ` src/foo/bar.rs ` to achieve the same effect.
3131- [ You can now catch visibility keywords (e.g. ` pub ` , ` pub(crate) ` ) in macros
3232 using the ` vis ` specifier.] [ 53370 ]
33- - [ Non-macro attributes now allow all forms of literals not just
34- strings.] [ 53044 ] e.g. Previously you would write ` #[attr("true")] ` you can now
33+ - [ Non-macro attributes now allow all forms of literals, not just
34+ strings.] [ 53044 ] Previously, you would write ` #[attr("true")] ` , and you can now
3535 write ` #[attr(true)] ` .
3636- [ You can now specify a function to handle a panic in the Rust runtime with the
3737 ` #[panic_handler] ` attribute.] [ 51366 ]
@@ -54,9 +54,9 @@ Stabilized APIs
5454- [ ` Ipv6Addr::UNSPECIFIED ` ]
5555- [ ` Iterator::find_map ` ]
5656
57- The following methods are a replacement methods for ` trim_left ` , ` trim_right ` ,
58- ` trim_left_matches ` , and ` trim_right_matches ` . Which will be deprecated
59- in 1.33.0.
57+ The following methods are replacement methods for ` trim_left ` , ` trim_right ` ,
58+ ` trim_left_matches ` , and ` trim_right_matches ` , which will be deprecated
59+ in 1.33.0:
6060- [ ` str::trim_end_matches ` ]
6161- [ ` str::trim_end ` ]
6262- [ ` str::trim_start_matches ` ]
7676----
7777- [ ` rustdoc ` allows you to specify what edition to treat your code as with the
7878 ` --edition ` option.] [ 54057 ]
79- - [ ` rustdoc ` now has the ` --color ` (Specify whether to output color) and
80- ` --error-format ` (Specify error format e.g. ` json ` ) options.] [ 53003 ]
79+ - [ ` rustdoc ` now has the ` --color ` (specify whether to output color) and
80+ ` --error-format ` (specify error format, e.g. ` json ` ) options.] [ 53003 ]
8181- [ We now distribute a ` rust-gdbgui ` script that invokes ` gdbgui ` with Rust
8282 debug symbols.] [ 53774 ]
8383- [ Attributes from Rust tools such as ` rustfmt ` or ` clippy ` are now
84- available. ] [ 53459 ] e.g. ` #[rustfmt::skip] ` will skip formatting the next item.
84+ available, ] [ 53459 ] e.g. ` #[rustfmt::skip] ` will skip formatting the next item.
8585
8686[ 50911 ] : https://github.com/rust-lang/rust/pull/50911/
8787[ 51363 ] : https://github.com/rust-lang/rust/pull/51363/
@@ -153,7 +153,7 @@ Compiler
153153
154154Libraries
155155---------
156- - [ ` Once::call_once ` now no longer requires ` Once ` to be ` 'static ` .] [ 52239 ]
156+ - [ ` Once::call_once ` no longer requires ` Once ` to be ` 'static ` .] [ 52239 ]
157157- [ ` BuildHasherDefault ` now implements ` PartialEq ` and ` Eq ` .] [ 52402 ]
158158- [ ` Box<CStr> ` , ` Box<OsStr> ` , and ` Box<Path> ` now implement ` Clone ` .] [ 51912 ]
159159- [ Implemented ` PartialEq<&str> ` for ` OsString ` and ` PartialEq<OsString> `
@@ -169,10 +169,10 @@ Stabilized APIs
169169
170170Cargo
171171-----
172- - [ Cargo can silently fix some bad lockfiles ] [ cargo/5831 ] You can use
173- ` --locked ` to disable this behaviour .
172+ - [ Cargo can silently fix some bad lockfiles. ] [ cargo/5831 ] You can use
173+ ` --locked ` to disable this behavior .
174174- [ ` cargo-install ` will now allow you to cross compile an install
175- using ` --target ` ] [ cargo/5614 ]
175+ using ` --target ` . ] [ cargo/5614 ]
176176- [ Added the ` cargo-fix ` subcommand to automatically move project code from
177177 2015 edition to 2018.] [ cargo/5723 ]
178178- [ ` cargo doc ` can now optionally document private types using the
@@ -184,15 +184,15 @@ Misc
184184 the specified level to that level.] [ 52354 ] For example ` --cap-lints warn `
185185 will demote ` deny ` and ` forbid ` lints to ` warn ` .
186186- [ ` rustc ` and ` rustdoc ` will now have the exit code of ` 1 ` if compilation
187- fails, and ` 101 ` if there is a panic.] [ 52197 ]
187+ fails and ` 101 ` if there is a panic.] [ 52197 ]
188188- [ A preview of clippy has been made available through rustup.] [ 51122 ]
189- You can install the preview with ` rustup component add clippy-preview `
189+ You can install the preview with ` rustup component add clippy-preview ` .
190190
191191Compatibility Notes
192192-------------------
193193- [ ` str::{slice_unchecked, slice_unchecked_mut} ` are now deprecated.] [ 51807 ]
194194 Use ` str::get_unchecked(begin..end) ` instead.
195- - [ ` std::env::home_dir ` is now deprecated for its unintuitive behaviour .] [ 51656 ]
195+ - [ ` std::env::home_dir ` is now deprecated for its unintuitive behavior .] [ 51656 ]
196196 Consider using the ` home_dir ` function from
197197 https://crates.io/crates/dirs instead.
198198- [ ` rustc ` will no longer silently ignore invalid data in target spec.] [ 52330 ]
@@ -432,7 +432,7 @@ Language
432432 be used as an identifier.
433433- [ The dyn syntax is now available.] [ 49968 ] This syntax is equivalent to the
434434 bare ` Trait ` syntax, and should make it clearer when being used in tandem with
435- ` impl Trait ` . Since it is equivalent to the following syntax:
435+ ` impl Trait ` because it is equivalent to the following syntax:
436436 ` &Trait == &dyn Trait ` , ` &mut Trait == &mut dyn Trait ` , and
437437 ` Box<Trait> == Box<dyn Trait> ` .
438438- [ Attributes on generic parameters such as types and lifetimes are
@@ -495,10 +495,10 @@ Cargo
495495 a different directory than ` target ` for placing compilation artifacts.
496496- [ Cargo will be adding automatic target inference for binaries, benchmarks,
497497 examples, and tests in the Rust 2018 edition.] [ cargo/5335 ] If your project specifies
498- specific targets e.g. using ` [[bin]] ` and have other binaries in locations
498+ specific targets, e.g. using ` [[bin]] ` , and have other binaries in locations
499499 where cargo would infer a binary, Cargo will produce a warning. You can
500- disable this feature ahead of time by setting any of the following ` autobins ` ,
501- ` autobenches ` , ` autoexamples ` , ` autotests ` to false .
500+ disable this feature ahead of time by setting any of the following to false:
501+ ` autobins ` , ` autobenches ` , ` autoexamples ` , ` autotests ` .
502502- [ Cargo will now cache compiler information.] [ cargo/5359 ] This can be disabled by
503503 setting ` CARGO_CACHE_RUSTC_INFO=0 ` in your environment.
504504
@@ -514,8 +514,8 @@ Compatibility Notes
514514 work.] [ 49896 ] e.g. ` ::core::prelude::v1::StrExt::is_empty("") ` will not
515515 compile, ` "".is_empty() ` will still compile.
516516- [ ` Debug ` output on ` atomic::{AtomicBool, AtomicIsize, AtomicPtr, AtomicUsize} `
517- will only print the inner type.] [ 48553 ] e .g.
518- ` print!("{:?}", AtomicBool::new(true)) ` will print ` true `
517+ will only print the inner type.] [ 48553 ] E .g.
518+ ` print!("{:?}", AtomicBool::new(true)) ` will print ` true ` ,
519519 not ` AtomicBool(true) ` .
520520- [ The maximum number for ` repr(align(N)) ` is now 2²⁹.] [ 50378 ] Previously you
521521 could enter higher numbers but they were not supported by LLVM. Up to 512MB
@@ -578,7 +578,7 @@ Version 1.26.2 (2018-06-05)
578578Compatibility Notes
579579-------------------
580580
581- - [ The borrow checker was fixed to avoid unsoundness when using match ergonomics] [ 51117 ]
581+ - [ The borrow checker was fixed to avoid unsoundness when using match ergonomics. ] [ 51117 ]
582582
583583[ 51117 ] : https://github.com/rust-lang/rust/issues/51117
584584
@@ -589,18 +589,18 @@ Version 1.26.1 (2018-05-29)
589589Tools
590590-----
591591
592- - [ RLS now works on Windows] [ 50646 ]
593- - [ Rustfmt stopped badly formatting text in some cases] [ rustfmt/2695 ]
592+ - [ RLS now works on Windows. ] [ 50646 ]
593+ - [ Rustfmt stopped badly formatting text in some cases. ] [ rustfmt/2695 ]
594594
595595
596596Compatibility Notes
597597--------
598598
599599- [ ` fn main() -> impl Trait ` no longer works for non-Termination
600- trait] [ 50656 ]
600+ trait. ] [ 50656 ]
601601 This reverts an accidental stabilization.
602- - [ ` NaN > NaN ` no longer returns true in const-fn contexts] [ 50812 ]
603- - [ Prohibit using turbofish for ` impl Trait ` in method arguments] [ 50950 ]
602+ - [ ` NaN > NaN ` no longer returns true in const-fn contexts. ] [ 50812 ]
603+ - [ Prohibit using turbofish for ` impl Trait ` in method arguments. ] [ 50950 ]
604604
605605[ 50646 ] : https://github.com/rust-lang/rust/issues/50646
606606[ 50656 ] : https://github.com/rust-lang/rust/pull/50656
@@ -616,18 +616,18 @@ Language
616616- [ Closures now implement ` Copy ` and/or ` Clone ` if all captured variables
617617 implement either or both traits.] [ 49299 ]
618618- [ The inclusive range syntax e.g. ` for x in 0..=10 ` is now stable.] [ 47813 ]
619- - [ The ` '_ ` lifetime is now stable. The underscore lifetime can be used anywhere where a
619+ - [ The ` '_ ` lifetime is now stable. The underscore lifetime can be used anywhere a
620620 lifetime can be elided.] [ 49458 ]
621621- [ ` impl Trait ` is now stable allowing you to have abstract types in returns
622- or in function parameters.] [ 49255 ] e .g. ` fn foo() -> impl Iterator<Item=u8> ` or
622+ or in function parameters.] [ 49255 ] E .g. ` fn foo() -> impl Iterator<Item=u8> ` or
623623 ` fn open(path: impl AsRef<Path>) ` .
624624- [ Pattern matching will now automatically apply dereferences.] [ 49394 ]
625625- [ 128-bit integers in the form of ` u128 ` and ` i128 ` are now stable.] [ 49101 ]
626626- [ ` main ` can now return ` Result<(), E: Debug> ` ] [ 49162 ] in addition to ` () ` .
627627- [ A lot of operations are now available in a const context.] [ 46882 ] E.g. You
628628 can now index into constant arrays, reference and dereference into constants,
629- and use Tuple struct constructors.
630- - [ Fixed entry slice patterns are now stable.] [ 48516 ] e .g.
629+ and use tuple struct constructors.
630+ - [ Fixed entry slice patterns are now stable.] [ 48516 ] E .g.
631631 ``` rust
632632 let points = [1 , 2 , 3 , 4 ];
633633 match points {
@@ -1052,7 +1052,7 @@ Language
10521052Compiler
10531053--------
10541054- [ Enabled ` TrapUnreachable ` in LLVM which should mitigate the impact of
1055- undefined behaviour .] [ 45920 ]
1055+ undefined behavior .] [ 45920 ]
10561056- [ rustc now suggests renaming import if names clash.] [ 45660 ]
10571057- [ Display errors/warnings correctly when there are zero-width or
10581058 wide characters.] [ 45711 ]
0 commit comments