MST

星途 面试题库

面试题:Rust结构体关联函数类型约束的复杂场景

假设有一个`Matrix`结构体,用于表示二维矩阵,包含`rows`和`cols`两个`usize`类型的字段,以及一个`data`字段是`Vec<f64>`类型,用于存储矩阵的数据。请实现一个关联函数`from_vec`,该函数接受一个`Vec<f64>`和两个`usize`类型的参数(分别表示行数和列数),要求在类型约束上保证`Vec<f64>`的长度必须等于`rows` * `cols`,否则编译失败。同时要考虑错误处理,当长度不匹配时返回一个`Result`类型,包含合适的错误信息。请写出完整代码。
47.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
struct Matrix {
    rows: usize,
    cols: usize,
    data: Vec<f64>,
}

impl Matrix {
    fn from_vec(data: Vec<f64>, rows: usize, cols: usize) -> Result<Self, &'static str> {
        if data.len() != rows * cols {
            return Err("The length of the Vec<f64> does not match the product of rows and cols");
        }
        Ok(Self {
            rows,
            cols,
            data,
        })
    }
}