я пытался реализовать FizzBuzz в Русте и не с какой-то тайной ошибки:Rust выражение "несогласованные типы: ожидается,`() `"
fn main() {
let mut i = 1;
while i < 100 {
println!("{}{}{}",
if i % 3 == 0 { "Fizz" },
if i % 5 == 0 { "Buzz" },
if !(i % 3 == 0 || i % 5 == 0) {
i
});
i += 1;
}
}
Ошибка:
error: mismatched types: expected `()` but found `&'static str` (expected() but found &-ptr)
if i % 3 == 0 { "Fizz" },
^~~~~~~~~~
error: mismatched types: expected `()` but found `&'static str` (expected() but found &-ptr)
if i % 5 == 0 { "Buzz" },
^~~~~~~~~~
error: mismatched types: expected `()` but found `<generic integer #0>` (expected() but found integral variable)
if !(i % 3 == 0 || i % 5 == 0) {
i
});
Или в более новых версиях Ржавчина с сообщением об ошибке слегка видоизмененной:
error: if may be missing an else clause [--explain E0308]
if i % 3 == 0 { "Fizz" },
^^^^^^^^^^^^^^^^^^^^^^^^ expected(), found &-ptr
note: in this expansion of format_args!
note: in this expansion of print! (defined in <std macros>)
note: in this expansion of println! (defined in <std macros>)
note: expected type `()`
note: found type `&'static str`
error: if may be missing an else clause [--explain E0308]
if i % 5 == 0 { "Buzz" },
^^^^^^^^^^^^^^^^^^^^^^^^ expected(), found &-ptr
note: in this expansion of format_args!
note: in this expansion of print! (defined in <std macros>)
note: in this expansion of println! (defined in <std macros>)
note: expected type `()`
note: found type `&'static str`
error: if may be missing an else clause [--explain E0308]
if !(i % 3 == 0 || i % 5 == 0) {
^expected(), found integral variable
note: in this expansion of format_args!
note: in this expansion of print! (defined in <std macros>)
note: in this expansion of println! (defined in <std macros>)
note: expected type `()`
note: found type `_`
Я нашел why does removing return give me an error: expected '()' but found, но добавление return
, как было предложено, не помогло.
Что означают эти ошибки и как я могу избежать их в будущем?
Btw, вы должны использовать 'для ввода в диапазоне (1, 100) {...}' 'вместо while' + ручной инкрементирования. – huon