32 lines
509 B
Rust
32 lines
509 B
Rust
// run-pass
|
|
#![allow(dead_code)]
|
|
#![allow(non_camel_case_types)]
|
|
|
|
#[derive(Copy, Clone)]
|
|
struct cat {
|
|
meow: extern "Rust" fn(),
|
|
}
|
|
|
|
fn meow() {
|
|
println!("meow")
|
|
}
|
|
|
|
fn cat() -> cat {
|
|
cat {
|
|
meow: meow,
|
|
}
|
|
}
|
|
|
|
#[derive(Copy, Clone)]
|
|
struct KittyInfo {kitty: cat}
|
|
|
|
// Code compiles and runs successfully if we add a + before the first arg
|
|
fn nyan(kitty: cat, _kitty_info: KittyInfo) {
|
|
(kitty.meow)();
|
|
}
|
|
|
|
pub fn main() {
|
|
let kitty = cat();
|
|
nyan(kitty, KittyInfo {kitty: kitty});
|
|
}
|