Skip to content

Code compiles but Rust-analyzer makes error. #12846

Closed
@RylanYancey

Description

@RylanYancey

rust-analyzer version: rust-analyzer version: 0.3.1131-standalone (897a7ec 2022-07-17)

rustc version: 1.62.1

relevant settings:
Bug appears on both Windows and WSL. On Windows 11 / Ubuntu 20.04

The code compiles and runs fine, no issues, but Rust-analyzer gives me an error when using DMatrix (typed as Matrix)'s associated functions.

Code example:

extern crate csv;
use csv::Reader;

use std::vec::Vec;
use std::fs;

extern crate nalgebra as na;
type Matrix = na::DMatrix<f32>

pub struct Dataset <const I: usize, const A: usize> {
    filename: String,
    dataset: Vec<Matrix>,
}

impl <const I: usize, const A: usize> Dataset <I, A> {

    pub fn new(name: &str) -> Self {
        Dataset { filename: name.to_string(), dataset: Vec::new() }
    }

    pub fn load_csv<F: Fn(&Vec<String>, &mut [[f32; I]; A])>(&mut self, conversion: F) {
        let contents = fs::read_to_string(
                "data/".to_string() + &self.filename + ".csv").unwrap();

        let mut reader = csv::ReaderBuilder::new()
            .delimiter(b',')
            .from_reader(contents.as_bytes());

        let mut output = [[0.0; I]; A];

        for result in reader.records() {

            let record = result.unwrap();
            let mut features: Vec<String> = Vec::new();

            for f in &record {
                features.push(f.to_string());
            }   

            (conversion)(&features, &mut output);

            let newmat = Matrix::from_fn(I - 1, A - 1, |i, j| { //<--- Error occurs here
                output[i][j]
            });

        }
    }
}

Error:
image
This code lines up with nalgebra's documentation, as found here: https://nalgebra.org/docs/user_guide/vectors_and_matrices#matrix-construction
Cargo.toml:

[package]
name = "canyon"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
nalgebra = "0.31.0"
csv = "1.1.6"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions