用 Rust 解释这个结构实现

Posted

技术标签:

【中文标题】用 Rust 解释这个结构实现【英文标题】:Explain this struct implementation in Rust 【发布时间】:2021-08-23 23:43:24 【问题描述】:
// `Inches`, a tuple struct that can be printed
#[derive(Debug)]
struct Inches(i32);

impl Inches 
    fn to_centimeters(&self) -> Centimeters 
        let &Inches(inches) = self;

        Centimeters(inches as f64 * 2.54)
    

我理解函数签名是以Inches结构的引用作为参数,函数定义中的第一行是什么意思?

【问题讨论】:

【参考方案1】:

let a = b 语法中,a 不仅必须是新变量的标识符,它还可以是一个模式,很像match arm: p>

let a = 0;
let (a, c) = (0, 1);
let &a = &0;
let Inches(a) = Inches(0);

所以您在这里看到的是 self 被匹配为 &Inches 并将内部值提取到一个名为“英寸”的新变量中。

这句话可能更通俗易懂:

let inches = self.0;

【讨论】:

以上是关于用 Rust 解释这个结构实现的主要内容,如果未能解决你的问题,请参考以下文章

使用Rust实现一个Brainfuck解释器

Rust语言精简手册

需要关于Rust的细胞和参考计数类型的整体解释

名词解释 算法

Rust 宏简记 - 以 vec! 为例

《Java设计模式》之解释器模式