rust/tests/ui/extern/issue-13655.rs
2023-01-11 09:32:08 +00:00

33 lines
568 B
Rust

// run-pass
#![feature(fn_traits, unboxed_closures)]
use std::ops::Fn;
struct Foo<T>(T);
impl<T: Copy> Fn<()> for Foo<T> {
extern "rust-call" fn call(&self, _: ()) -> T {
match *self {
Foo(t) => t
}
}
}
impl<T: Copy> FnMut<()> for Foo<T> {
extern "rust-call" fn call_mut(&mut self, _: ()) -> T {
self.call(())
}
}
impl<T: Copy> FnOnce<()> for Foo<T> {
type Output = T;
extern "rust-call" fn call_once(self, _: ()) -> T {
self.call(())
}
}
fn main() {
let t: u8 = 1;
println!("{}", Foo(t)());
}