Rust errors / Everything else
Rust compiler error · checked with rustc 1.99.0
Rust error E0060: this function takes at least 1 argument but 0 arguments were supplied
What it meansExternal C functions are allowed to be variadic. However, a variadic function takes a minimum number of arguments. For example, consider C's variadic printf function:
What rustc prints
error[E0060]: this function takes at least 1 argument but 0 arguments were supplied --> main.rs:9:10 | 9 | unsafe { printf(); } // error! | ^^^^^^-- argument #1 of type `*const i8` is missing | note: function defined here --> main.rs:6:8 | 6 | fn printf(_: *const c_char, ...) -> c_int; | ^^^^^^ - help: provide the argument | 9 | unsafe { printf(/* *const i8 */); } // error! | +++++++++++++++
Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
External C functions are allowed to be variadic. However, a variadic function takes a minimum number of arguments. For example, consider C's variadic printf function:
use std::os::raw::{c_char, c_int};
extern "C" {
fn printf(_: *const c_char, ...) -> c_int;
}
unsafe { printf(); } // error!
Using this declaration, it must be called with at least one argument, so simply calling printf() is invalid. But the following uses are allowed:
unsafe {
printf(c"test\n".as_ptr());
printf(c"number = %d\n".as_ptr(), 3);
printf(c"%d, %d\n".as_ptr(), 10, 5);
}From rustc --explain E0060 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0061this function takes N arguments but M were supplied
- E0412cannot find type in this scope
- E0515cannot return reference to local variable
- E0728await is only allowed inside async functions and blocks
- E0054cannot cast `i32` as `bool`
- E0057this function takes 1 argument but 0 arguments were supplied
- E0062field `x` specified more than once
Up next
Often hit nextE0061: this function takes N arguments but M were suppliedA related error from the same family.Read it next →Did this answer your question?