2018-08-30 14:18:55 +02:00
|
|
|
// run-pass
|
2013-01-10 14:15:17 -08:00
|
|
|
fn example_err(prog: &str, arg: &str) {
|
2013-09-24 22:16:43 -07:00
|
|
|
println!("{}: {}", prog, arg)
|
2013-01-10 14:15:17 -08:00
|
|
|
}
|
|
|
|
|
2015-01-02 17:32:54 -05:00
|
|
|
fn exit<F>(print: F, prog: &str, arg: &str) where F: FnOnce(&str, &str) {
|
2013-01-10 14:15:17 -08:00
|
|
|
print(prog, arg);
|
|
|
|
}
|
|
|
|
|
2015-01-02 17:32:54 -05:00
|
|
|
struct X<F> where F: FnOnce(&str, &str) {
|
|
|
|
err: F,
|
2013-01-10 14:15:17 -08:00
|
|
|
}
|
|
|
|
|
2015-01-02 17:32:54 -05:00
|
|
|
impl<F> X<F> where F: FnOnce(&str, &str) {
|
2014-02-21 15:41:51 -08:00
|
|
|
pub fn boom(self) {
|
2013-01-10 14:15:17 -08:00
|
|
|
exit(self.err, "prog", "arg");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-02-01 19:43:17 -08:00
|
|
|
pub fn main(){
|
2014-02-21 15:41:51 -08:00
|
|
|
let val = X {
|
2013-01-10 14:15:17 -08:00
|
|
|
err: example_err,
|
|
|
|
};
|
|
|
|
val.boom();
|
|
|
|
}
|