Rust——impl是什么意思

你这个问题非常关键,impl 是 Rust 里**从"写函数"升级到"写结构能力"**的核心语法。

我直接讲清楚,不绕。


一、impl 是什么?

✅ 一句话定义

👉 impl = implementation(实现)

👉 用来给某个类型(type)定义方法(methods)


二、看你这段代码在干什么

复制代码
impl Solution {
    pub fn merge(...) {
        ...
    }
}

👉 翻译成人话:

Solution 这个类型,定义一个叫 merge 的方法


三、类比你熟悉的 Java(非常重要)

Java 写法:

复制代码
class Solution {
    public void merge(...) {
        ...
    }
}

Rust 写法:

复制代码
struct Solution;

impl Solution {
    pub fn merge(...) {
        ...
    }
}

🎯 核心区别

Java Rust
类里写方法 impl 块写方法
class struct
方法属于类 方法属于类型(impl 绑定)

四、为什么 Rust 要这样设计?

Rust 没有传统 OOP 的"类(class)",而是:

👉 数据(struct) + 行为(impl)分离


🧠 你可以这样理解

复制代码
struct Solution;   // 定义数据(哪怕是空的)

impl Solution {    // 给它加功能
    fn merge() {}
}

👉 这就是 Rust 的"类"


五、你的这段代码有个隐藏点(重点)

复制代码
pub fn merge(nums1: &mut Vec<i32>, ...)

你会发现:

👉 没有 self


✅ 说明什么?

👉 这是一个静态方法(static method)


类比 Java

复制代码
class Solution {
    public static void merge(...) {
        ...
    }
}

六、如果有 self 就不一样了

复制代码
impl Solution {
    pub fn merge(&self) {
        // 实例方法
    }
}

👉 这才是"对象方法"


📌 三种常见写法

复制代码
fn foo(&self)        // 只读
fn foo(&mut self)    // 可修改
fn foo(self)         // 拿走所有权

七、再帮你拆一下你这段代码(加深理解)

复制代码
nums1.truncate(m as usize);

👉 截断 nums1 到 m 长度

复制代码
nums1.extend_from_slice(&nums2);

👉 把 nums2 拼进去

复制代码
nums1.sort();

👉 排序


👉 本质是:

先裁剪 → 再拼接 → 再排序(简单暴力解法)


八、总结(你必须记住的)

  • impl = 给类型加方法

  • Rust 没有 class,用 struct + impl

  • 没有 self → 静态方法

  • self → 实例方法


🚀 下一步建议(你现在正好卡在关键点)

你接下来一定会遇到:

👉 &self&mut selfself 到底区别是什么?

这个是 Rust 最核心的点(= 所有权 + 方法绑定)

你可以直接问我:

👉 "self 和 &mut self 本质区别是什么?"

我可以用 内存 + 指针 + Java 对比给你讲透,这一步过了你就进入中级了。

相关推荐
红尘散仙4 小时前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
卷毛的技术笔记5 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
isyangli_blog5 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008115 小时前
FastAPI APIRouter
开发语言·python
Benszen5 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆5 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木5 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
喵个咪6 小时前
GoWind Toolkit Go后端代码生成 完整全流程实战
后端·go·orm
杨充6 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~6 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言