mirror of https://github.com/rust-lang/rust
23 lines
617 B
Rust
23 lines
617 B
Rust
// Ensure we get unsafe function after coercion
|
|
unsafe fn add(a: i32, b: i32) -> i32 {
|
|
a + b
|
|
}
|
|
fn main() {
|
|
// We can coerce non-capturing closure to unsafe function
|
|
let foo = match "+" {
|
|
"+" => add,
|
|
"-" => |a, b| (a - b) as i32,
|
|
_ => unimplemented!(),
|
|
};
|
|
let result: i32 = foo(5, 5); //~ ERROR call to unsafe function
|
|
|
|
|
|
// We can coerce unsafe function to non-capturing closure
|
|
let foo = match "+" {
|
|
"-" => |a, b| (a - b) as i32,
|
|
"+" => add,
|
|
_ => unimplemented!(),
|
|
};
|
|
let result: i32 = foo(5, 5); //~ ERROR call to unsafe function
|
|
}
|