diff options
| author | tinaun <tinagma@gmail.com> | 2017-10-10 04:51:39 -0400 |
|---|---|---|
| committer | tinaun <tinagma@gmail.com> | 2017-10-10 04:59:28 -0400 |
| commit | d07825258e2d5860442616ede39eb11ca3f8c9b6 (patch) | |
| tree | c2d0b6e17fb34a0d8a56cb8e65cadd40f2e7a68b | |
| parent | 364148dbf9d7a3e4a8e0c766ae3395f63fcb5a01 (diff) | |
| download | rust-d07825258e2d5860442616ede39eb11ca3f8c9b6.tar.gz rust-d07825258e2d5860442616ede39eb11ca3f8c9b6.zip | |
unstable book: fn_traits
| -rw-r--r-- | src/doc/unstable-book/src/language-features/optin-builtin-traits.md | 2 | ||||
| -rw-r--r-- | src/doc/unstable-book/src/library-features/fn-traits.md | 35 |
2 files changed, 36 insertions, 1 deletions
diff --git a/src/doc/unstable-book/src/language-features/optin-builtin-traits.md b/src/doc/unstable-book/src/language-features/optin-builtin-traits.md index 9baa7eb3532..4ff46dedba1 100644 --- a/src/doc/unstable-book/src/language-features/optin-builtin-traits.md +++ b/src/doc/unstable-book/src/language-features/optin-builtin-traits.md @@ -15,7 +15,7 @@ has explictly opted out via a _negative impl_. [`Send`]: https://doc.rust-lang.org/std/marker/trait.Send.html [`Sync`]: https://doc.rust-lang.org/std/marker/trait.Sync.html -```rust +```rust, ignore impl !Type for Trait ``` diff --git a/src/doc/unstable-book/src/library-features/fn-traits.md b/src/doc/unstable-book/src/library-features/fn-traits.md new file mode 100644 index 00000000000..d0f1fe8dc7c --- /dev/null +++ b/src/doc/unstable-book/src/library-features/fn-traits.md @@ -0,0 +1,35 @@ +# `fn_traits` + +The tracking issue for this feature is [#29625] + +See Also: [`unboxed_closures`](language-features/unboxed_closures.md) + +[#29625]: https://github.com/rust-lang/rust/issues/29625 + +---- + +The `fn_traits` feature allows for implementation of the [`Fn*`] traits +for creating custom closure-like types. + +[`Fn*`]: https://doc.rust-lang.org/std/ops/trait.Fn.html + +```rust +#![feature(unboxed_closures)] +#![feature(fn_traits)] + +struct Adder { + a: u32 +} + +impl FnOnce<(u32, )> for Adder { + type Output = u32; + extern "rust-call" fn call_once(self, b: (u32, )) -> Self::Output { + self.a + b.0 + } +} + +fn main() { + let adder = Adder { a: 3 }; + assert_eq!(adder(2), 5); +} +``` |
