< 返回版块

lindividual 发表于 2019-08-07 16:32

在leetcode上做题,发现编译不过,提示类型不匹配。请问怎么把usize转换成i32,或者有其它的解决办法?万分感谢!

代码:

impl Solution {
    pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
        let mut finder: i32;
        let mut indices = Vec::new();
        for (i, i_v) in nums.iter().enumerate() {
            finder = target - i_v;
            for (j, j_v) in nums.iter().enumerate() {
                if j_v == &finder && j != i {
                    indices.push(i);
                    indices.push(j);
                    break;
                }
            }
        }
        indices
    }
}

报错信息:

mismatched types

expected i32, found usize

note: expected type `std::vec::Vec<i32>`
         found type `std::vec::Vec<usize>`

评论区

写评论
作者 lindividual 2019-08-08 17:17

感谢感谢!! 对以下内容的回复:

作者 lindividual 2019-08-08 17:17

感谢感谢!! 对以下内容的回复:

作者 lindividual 2019-08-08 17:17

感谢感谢!! 对以下内容的回复:

lizhichao 2019-08-08 14:31

indices.push(i as i32); indices.push(j as i32);

jonirrings 2019-08-08 11:10
return 22:usize as i32;

就行,rust要求显式转换。

Mike Tang 2019-08-07 17:21

as

作者 lindividual 2019-08-07 16:52

嗯嗯,多谢建议,我可能太急了 对以下内容的回复:

yjhmelody 2019-08-07 16:36

你应该回去看官方书复习下基础知识

1 共 8 条评论, 1 页