You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust如何将u32类型与可取值为负的动态int类型相加?

代码修改方案

你遇到的是Rust严格的整数类型检查报错:无符号u32和有符号i32不允许直接运算。修改逻辑很简单:先把行号、列号转成i32完成带偏移的计算,再转回u32即可。同时你原有代码存在变量名重复的笔误,会导致生成的pulsar图案缺失左下扇区,需要一并修正。

修改后的完整代码

pub fn insert_pulsar(&mut self, row: u32, column: u32) {
    // 可选:添加断言避免点击位置太靠近边界导致坐标为负溢出
    debug_assert!(row >= 6 && column >= 6, "pulsar中心位置不能太靠近边界");

    fn get_pulsar_sector(row: u32, column: u32, x: i32, y: i32) -> Vec<(u32, u32)> {
        // 先转成i32再做偏移计算
        let row_i = row as i32;
        let col_i = column as i32;
        vec![
            ((row_i + 1 * y) as u32, (col_i + 2 * x) as u32),
            ((row_i + 1 * y) as u32, (col_i + 3 * x) as u32),
            ((row_i + 1 * y) as u32, (col_i + 4 * x) as u32),
            ((row_i + 6 * y) as u32, (col_i + 2 * x) as u32),
            ((row_i + 6 * y) as u32, (col_i + 3 * x) as u32),
            ((row_i + 6 * y) as u32, (col_i + 4 * x) as u32),
            ((row_i + 2 * y) as u32, (col_i + 1 * x) as u32),
            ((row_i + 3 * y) as u32, (col_i + 1 * x) as u32),
            ((row_i + 4 * y) as u32, (col_i + 1 * x) as u32),
            ((row_i + 2 * y) as u32, (col_i + 6 * x) as u32),
            ((row_i + 3 * y) as u32, (col_i + 6 * x) as u32),
            ((row_i + 4 * y) as u32, (col_i + 6 * x) as u32),
        ]
    }

    let top_left_pulsar_sector = get_pulsar_sector(row, column, -1, -1);
    let top_right_pulsar_sector = get_pulsar_sector(row, column, 1, -1);
    let bottom_right_pulsar_sector = get_pulsar_sector(row, column, 1, 1);
    // 修正变量名重复的笔误,原来两次定义了bottom_right_pulsar_sector
    let bottom_left_pulsar_sector = get_pulsar_sector(row, column, -1, 1);

    let pulsar = [
        top_left_pulsar_sector,
        top_right_pulsar_sector,
        bottom_right_pulsar_sector,
        bottom_left_pulsar_sector
    ].concat();

    self.set_cells(&pulsar);
}

说明

  • debug_assert!只会在开发模式下触发检查,帮助你提前发现点击位置太靠近边界的问题,不会影响发布版本的性能
  • 类型转换的逻辑只在扇区计算函数内完成,不需要修改函数的输入输出签名,也不影响外层其他调用逻辑

内容的提问来源于stack exchange,提问作者reshnaut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:24:05