我爱Rust,希望它变得更好。 开发团队知道所有提出的问题。 我只是想引起大家的讨论和热情,以使一种好的语言变得更好。
#![feature(c_variadic)]
#[no_mangle]
pub unsafe extern "C" fn func(fixed: u32, mut args: ...) {
let x: u8 = args.arg();
let y: u16 = args.arg();
let z: u32 = args.arg();
println!("{} {} {} {}", fixed, x, y, z);
}
结果(编译时错误):
error[E0554]: #[feature] may not be used on the stable release channel
|
1 | #![feature(c_variadic)]
| ^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to previous error(s)
Rust具有可变的宏。 Rust可以使用C可变参数函数。 RFC 2137仅涉及从Rust内部定义可变参数函数的情况。 这很难考虑到垃圾回收和生存期,因此此功能可能仅限于地面类型或类似的折衷方案。 也许这只是与宏重叠,而该功能是不必要的。
From: https://hackernoon.com/things-you-cant-do-in-rust-variadic-functions-389df3bd91e7