diff options
| author | Deadbeef <ent3rm4n@gmail.com> | 2021-09-15 11:28:10 +0000 |
|---|---|---|
| committer | Deadbeef <ent3rm4n@gmail.com> | 2021-09-15 11:48:27 +0000 |
| commit | f8aa73d3dd951d69903e962054f2614b083c5b9c (patch) | |
| tree | 505a93c3c6e2f02e2ef3af176a3bcc0c93ae13f0 /src/test/ui/rfc-2632-const-trait-impl | |
| parent | d3f981b144c742c3e886a6234002a716a177bc98 (diff) | |
| download | rust-f8aa73d3dd951d69903e962054f2614b083c5b9c.tar.gz rust-f8aa73d3dd951d69903e962054f2614b083c5b9c.zip | |
Coerce const FnDefs to implement const Fn traits
Diffstat (limited to 'src/test/ui/rfc-2632-const-trait-impl')
| -rw-r--r-- | src/test/ui/rfc-2632-const-trait-impl/const-closures.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/test/ui/rfc-2632-const-trait-impl/const-closures.rs b/src/test/ui/rfc-2632-const-trait-impl/const-closures.rs new file mode 100644 index 00000000000..99e608797ff --- /dev/null +++ b/src/test/ui/rfc-2632-const-trait-impl/const-closures.rs @@ -0,0 +1,31 @@ +// run-pass + +#![feature(const_trait_impl)] +#![feature(const_fn_trait_bound)] + +const fn answer_p1<F>(f: &F) -> u8 + where + F: ~const FnOnce() -> u8, + F: ~const FnMut() -> u8, + F: ~const Fn() -> u8, +{ + f() * 7 +} + +const fn three() -> u8 { + 3 +} + +const fn answer_p2() -> u8 { + answer_p1(&three) +} + +const fn answer<F: ~const Fn() -> u8>(f: &F) -> u8 { + f() + f() +} + +const ANSWER: u8 = answer(&answer_p2); + +fn main() { + assert_eq!(ANSWER, 42) +} |
