История изменений
Исправление Virtuos86, (текущая версия) :
Мне показалось, что можно поправить версию pftBest, и я был прав: https://play.rust-lang.org/?gist=43a660c4e28fd50e40f91eab0f3cbcea&version...
macro_rules! apply {
($func:ident $(, $x:expr )* ; $( $y:ident ),* ) => (
|$($y),*| {
$func($($x,)* $($y,)*)
}
)
}
fn sum(a: u32, b: u32, c: u32) -> u32 {
a + b + c
}
fn main() {
let foo = apply!(sum, 30 ; a, b);
let ans = foo(10, 2);
println!("Answer: {}", ans);
let bar = apply!(sum, 30, 7 ; b);
let ans = bar(6);
println!("Answer: {}", ans);
let bazz = apply!(sum ; a, b, c);
let ans = bazz(1, 2, 6);
println!("Answer: {}", ans);
}
Исходная версия Virtuos86, :
Мне показалось, что можно поправить версию pftBest, и я был прав: https://play.rust-lang.org/?gist=43a660c4e28fd50e40f91eab0f3cbcea&version...
macro_rules! apply {
($func:ident $(, $x:expr )* ; $( $y:ident ),* ) => (
|$($y),*| {
$func($($x,)* $($y),*)
}
)
}
fn sum(a: u32, b: u32, c: u32) -> u32 {
a + b + c
}
fn main() {
let foo = apply!(sum, 30 ; a, b);
let ans = foo(10, 2);
println!("Answer: {}", ans);
let bar = apply!(sum, 30, 7 ; b);
let ans = bar(6);
println!("Answer: {}", ans);
let bazz = apply!(sum ; a, b, c);
let ans = bazz(1, 2, 6);
println!("Answer: {}", ans);
}