MST

星途 面试题库

面试题:Rust 泛型结构体中的类型推导应用

定义一个泛型结构体 `Point`,包含两个泛型字段 `x` 和 `y`。实现一个函数 `distance`,它接收两个 `Point` 实例,计算并返回它们之间的 “距离”(假设这里简单的距离计算为 `x` 和 `y` 差值平方和的平方根)。要求在函数中充分利用 Rust 的类型推导机制,不需要显式标注所有类型。
46.2万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::fmt::Debug;
use std::ops::Sub;
use std::sqrt;

// 定义泛型结构体Point
struct Point<T>
where
    T: Debug + Sub<Output = T> + Copy + std::ops::Mul<Output = T> + std::convert::Into<f64>,
{
    x: T,
    y: T,
}

// 实现distance函数
fn distance<T>(p1: Point<T>, p2: Point<T>) -> f64
where
    T: Debug + Sub<Output = T> + Copy + std::ops::Mul<Output = T> + std::convert::Into<f64>,
{
    let dx = (p2.x - p1.x).into();
    let dy = (p2.y - p1.y).into();
    sqrt(dx * dx + dy * dy)
}