< 返回版块

pader 发表于 2020-06-30 22:18

fn compare_something(num: &u8) {
    let zero = 0u8;
    if num > zero {
        println("Yes you are!");
    } eles {
        println("No, you are not!");
    }
}
mismatched types [E0308] expected `&u8`, found `u8`

WTF???

另外 rustcc 的登录也太不稳定了,经常登不上。

评论区

写评论
作者 pader 2020-07-01 14:03

清了cookie,隐私模式都登不上,有点随缘。

之前也是有会有怎么都登不上,想发表点都没法发表,感觉这是时间段时间,有些时间登不上就是登不上。

这样社区还怎么活跃起来。。可以考虑增加 gitee 的授权。

--
👇
Mike Tang: 要清一下github的coockie,情况未明。

作者 pader 2020-07-01 13:53

这个问题基本有答案了,那就是解引用,贴出实际代码吧,Rust 的文档我是翻来翻去好几遍,还得继续看。

fn get_max_in_vec(nums: &Vec<u8>) -> u8 {
    let mut max = 0u8;

    for n in nums {
        if *n > max {
            max = *n;
        }
    }

    max
}

这里的 n 需要解引用。

作者 pader 2020-07-01 13:41

额。。。。。。好吧。。。。

--
👇
whfuyn: eles?

--
👇
pader: 我又碰到奇葩问题了。。。

fn compare(num: &u8) {
    let zero = 0u8;
    if *num > zero {
        println!("Yes you are!");
    } eles {
        println!("No, you are not!");
    }
}

就这个简单的东西,奇怪的是居然无法解析里面的 else 。

error: expected one of `,` or `}`, found `!`
  --> src/bin/io.rs:20:16
   |
19 |     } eles {
   |       ---- while parsing this struct
20 |         println!("No, you are not!");
   |                ^ expected one of `,` or `}`

error[E0422]: cannot find struct, variant or union type `eles` in this scope
  --> src/bin/io.rs:19:7
   |
19 |     } eles {
   |       ^^^^ not found in this scope

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0422`.

whfuyn 2020-07-01 13:31

eles?

--
👇
pader: 我又碰到奇葩问题了。。。

fn compare(num: &u8) {
    let zero = 0u8;
    if *num > zero {
        println!("Yes you are!");
    } eles {
        println!("No, you are not!");
    }
}

就这个简单的东西,奇怪的是居然无法解析里面的 else 。

error: expected one of `,` or `}`, found `!`
  --> src/bin/io.rs:20:16
   |
19 |     } eles {
   |       ---- while parsing this struct
20 |         println!("No, you are not!");
   |                ^ expected one of `,` or `}`

error[E0422]: cannot find struct, variant or union type `eles` in this scope
  --> src/bin/io.rs:19:7
   |
19 |     } eles {
   |       ^^^^ not found in this scope

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0422`.

attliaLin 2020-07-01 13:29

else, typo 了

--
👇
pader: 我又碰到奇葩问题了。。。

fn compare(num: &u8) {
    let zero = 0u8;
    if *num > zero {
        println!("Yes you are!");
    } eles {
        println!("No, you are not!");
    }
}

就这个简单的东西,奇怪的是居然无法解析里面的 else 。

error: expected one of `,` or `}`, found `!`
  --> src/bin/io.rs:20:16
   |
19 |     } eles {
   |       ---- while parsing this struct
20 |         println!("No, you are not!");
   |                ^ expected one of `,` or `}`

error[E0422]: cannot find struct, variant or union type `eles` in this scope
  --> src/bin/io.rs:19:7
   |
19 |     } eles {
   |       ^^^^ not found in this scope

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0422`.

作者 pader 2020-07-01 12:46

我又碰到奇葩问题了。。。

fn compare(num: &u8) {
    let zero = 0u8;
    if *num > zero {
        println!("Yes you are!");
    } eles {
        println!("No, you are not!");
    }
}

就这个简单的东西,奇怪的是居然无法解析里面的 else 。

error: expected one of `,` or `}`, found `!`
  --> src/bin/io.rs:20:16
   |
19 |     } eles {
   |       ---- while parsing this struct
20 |         println!("No, you are not!");
   |                ^ expected one of `,` or `}`

error[E0422]: cannot find struct, variant or union type `eles` in this scope
  --> src/bin/io.rs:19:7
   |
19 |     } eles {
   |       ^^^^ not found in this scope

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0422`.

作者 pader 2020-07-01 12:27

我实际上的函数并不是直接传了个 &u8 进来,而是传了个 &Vec<u8>,所以不能直接传 u8,Vec 不是 Copy 的。 我觉得超难受,动不动就要被打击一下~

--
👇
luojia65: 要类型完全一样才可以比较的

工程设计上,因为u8是实现了复制语义Copy的,这时候函数签名里直接传u8更省事儿,&u8还要解引用才行。虽然编译后可能都差不多,不是extern函数是会有比较暴力的优化。

洛佳 2020-07-01 00:54

要类型完全一样才可以比较的

工程设计上,因为u8是实现了复制语义Copy的,这时候函数签名里直接传u8更省事儿,&u8还要解引用才行。虽然编译后可能都差不多,不是extern函数是会有比较暴力的优化。

Mike Tang 2020-06-30 23:04

要清一下github的coockie,情况未明。

Neutron3529 2020-06-30 22:51

试过了,哪怕isize跟i64都不能比较大小……

fn main() {
dbg!(3isize<5i64);
}

--
👇
emacsist: 是不能. Rust 要求比较的两个操作数的类型要完全一致的.

emacsist 2020-06-30 22:36

是不能. Rust 要求比较的两个操作数的类型要完全一致的.

1 共 11 条评论, 1 页