From 1cda3c3b49183b60dc90ec1b19e494ff118c976c Mon Sep 17 00:00:00 2001 From: Alexander Regueiro Date: Mon, 22 Oct 2018 02:55:01 +0100 Subject: [PATCH] Added section to Unstable Book. --- .../src/language-features/trait-alias.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/doc/unstable-book/src/language-features/trait-alias.md diff --git a/src/doc/unstable-book/src/language-features/trait-alias.md b/src/doc/unstable-book/src/language-features/trait-alias.md new file mode 100644 index 000000000000..4f2db040160c --- /dev/null +++ b/src/doc/unstable-book/src/language-features/trait-alias.md @@ -0,0 +1,34 @@ +# `trait_alias` + +The tracking issue for this feature is: [#41517] + +[#41417]: https://github.com/rust-lang/rust/issues/41517 + +------------------------ + +The `trait_alias` feature adds support for trait aliases. These allow aliases +to be created for one or more traits (currently just a single regular trait plus +any number of auto-traits), and used wherever traits would normally be used as +either bounds or trait objects. + +```rust +#![feature(trait_alias)] + +trait Foo = std::fmt::Debug + Send; +trait Bar = Foo + Sync; + +// Use trait alias as bound on type parameter. +fn foo(v: &T) { + println!("{:?}", v); +} + +pub fn main() { + foo(&1); + + // Use trait alias for trait objects. + let a: &Bar = &123; + println!("{:?}", a); + let b = Box::new(456) as Box; + println!("{:?}", b); +} +```