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 对比给你讲透,这一步过了你就进入中级了。

相关推荐
程序员大辉2 小时前
开源LibreOffice(Office办公套件)下载完整安装教程
开发语言·microsoft·c#
yngsqq2 小时前
运行c#脚本
开发语言·数据库·c#
代码羊羊2 小时前
Rust模式匹配
开发语言·后端·rust
Wild_Pointer.2 小时前
项目实战:编写CMakeLists管理Qt+OpenCV项目
开发语言·c++·qt
莫逸风2 小时前
【java-core-collections】集合框架深度解析
java·开发语言
IT_陈寒2 小时前
Python的GIL把我CPU跑满时我才明白并发不是这样玩的
前端·人工智能·后端
geovindu2 小时前
go: Bridge Pattern
开发语言·设计模式·golang·软件构建·桥接模式
小江的记录本2 小时前
【分布式】分布式系统核心知识体系:CAP定理、BASE理论与核心挑战
java·前端·网络·分布式·后端·python·安全
Fate_I_C2 小时前
Kotlin 为什么是 Android 开发的首选语言
android·开发语言·kotlin