Rust踩雷笔记(5)——刷点链表的题(涉及智能指针Box,持续更新)

目录

      • [leetcode 2 两数相加------模式匹配+单链表+Box](#leetcode 2 两数相加——模式匹配+单链表+Box)

只能说Rust链表题的画风和C++完全不一样,作为新手一时间还不太适应,于是单独为链表、智能指针开一篇,主要记录leetcode相关题型的答案以及注意事项。

leetcode 2 两数相加------模式匹配+单链表+Box

⭐️两个注意点

🍉里面有官方提供的单链表的实现,可以参考下;

🍉遍历链表可以用loop+match模式匹配的方式

rust 复制代码
// Definition for singly-linked list.
#[derive(PartialEq, Eq, Clone, Debug)]
pub struct ListNode {
  pub val: i32,
  pub next: Option<Box<ListNode>>
}

impl ListNode {
  #[inline]
  fn new(val: i32) -> Self {
    ListNode {
      next: None,
      val
    }
  }
}

impl Solution {
    pub fn add_two_numbers(l1: Option<Box<ListNode>>, l2: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
        let mut t = (l1, l2, 0, 0);
        let mut result = None;
        let mut tail = &mut result;
        loop {
            t = match t {
                (None, None, _, 0) => break,
                (Some(l1), Some(l2), _, mut carry) => {
                    let temp = l1.val + l2.val + carry;
                    let res_temp = temp % 10;
                    carry = temp / 10;
                    (l1.next, l2.next, res_temp, carry)
                }
                (Some(l), None, _, mut carry) | (None, Some(l), _, mut carry) => {
                    let temp = l.val + carry;
                    let res_temp = temp % 10;
                    carry = temp / 10;
                    (l.next, None, res_temp, carry)
                }
                (None, None, _, carry) => {
                    (None, None, carry, 0)
                }
            };
            *tail = Some(Box::new(ListNode::new(t.2)));
            tail = &mut tail.as_mut().unwrap().next;
        }
        result
    }
}

🍉#[inline] 是什么?

是Rust 中的一个属性,用于提示编译器尝试对函数进行内联展开优化。 内联展开是一种优化技术,可以将函数调用的地方替换为函数体的内容,减少了函数调用的开销,提高代码的执行速度。 通过在函数定义之前使用 #[inline] 属性,你可以向编译器发出建议,让它在合适的情况下尝试内联展开函数。

相关推荐
冬奇Lab1 天前
一天一个开源项目(第42篇):OpenFang - 用 Rust 构建的 Agent 操作系统,16 层安全与 7 个自主 Hands
人工智能·rust·开源
齐生11 天前
iOS 知识点 - 渲染机制、动画、卡顿小集合
笔记
量子位1 天前
Transformer论文作者重造龙虾,Rust搓出钢铁版,告别OpenClaw裸奔漏洞
rust·openai·ai编程
用户962377954481 天前
VulnHub DC-1 靶机渗透测试笔记
笔记·测试
哈里谢顿1 天前
Rust 语言入门博客
rust
齐生12 天前
iOS 知识点 - IAP 是怎样的?
笔记
tingshuo29173 天前
D006 【模板】并查集
笔记
DongLi013 天前
rustlings 学习笔记 -- exercises/06_move_semantics
rust
ssshooter3 天前
Tauri 踩坑 appLink 修改后闪退
前端·ios·rust
布列瑟农的星空3 天前
前端都能看懂的rust入门教程(二)——函数和闭包
前端·后端·rust