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

相关推荐
爱码小白19 分钟前
importlib模块
开发语言·前端·python
techdashen1 小时前
Go设计取舍之四: map不变时能否并发修改不同value
开发语言·后端·golang
小小小米粒1 小时前
阿姆达尔定律(Amdahl‘s Law)
java·开发语言
知彼解己1 小时前
Java 版本演进
java·开发语言·spring boot
风样滴男人哟1 小时前
PHP特性之反射类ReflectionClass机制
android·开发语言·php
看昭奚恤哭1 小时前
Flutter 布局核心思想
开发语言·javascript·flutter
朱容zr3331332 小时前
为什么推荐使用自增主键?使用UUID作为主键的优缺点是什么?
java·运维·数据库·后端·mysql·面试·性能优化
用户608186527902 小时前
一文吃透 Avalonia 布局容器|Grid 到 UniformGrid 核心用法 + 语法糖实战
后端
IsSh9nj6q2 小时前
Python全栈应用搭建神器magic-dash .新版本介绍
开发语言·python·dash
Ai拆代码的曹操2 小时前
Dubbo 线程池爆满排坑:Linux 用户线程数限制,一个容易被忽略的根因
后端·源码阅读