fix(upgrade): errors from Rust 2024 edition

- gen is a reserved keyword (→ renamed module to generator)
- ref in patterns with implicit borrowing (→ removed ref)
- & pattern with implicit borrowing (→ added & to outer pattern)
This commit is contained in:
Edward Langley
2026-04-11 00:38:30 -07:00
parent ee6739158e
commit d4f6efd1c0
5 changed files with 11 additions and 11 deletions

View File

@ -1,7 +1,7 @@
[package] [package]
name = "improvise" name = "improvise"
version = "0.1.0-rc1" version = "0.1.0-rc1"
edition = "2021" edition = "2024"
description = "Terminal pivot-table modeling in the spirit of Lotus Improv" description = "Terminal pivot-table modeling in the spirit of Lotus Improv"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/fiddlerwoaroof/improvise" repository = "https://github.com/fiddlerwoaroof/improvise"

View File

@ -140,7 +140,7 @@ impl ImportPipeline {
} }
// Create derived date-component categories // Create derived date-component categories
for (_, _, _, ref derived_name) in &date_extractions { for (_, _, _, derived_name) in &date_extractions {
model.add_category(derived_name)?; model.add_category(derived_name)?;
} }
@ -176,7 +176,7 @@ impl ImportPipeline {
coords.push((cat_proposal.field.clone(), v.clone())); coords.push((cat_proposal.field.clone(), v.clone()));
// Extract date components from this field's value // Extract date components from this field's value
for (field, fmt, comp, ref derived_name) in &date_extractions { for (field, fmt, comp, derived_name) in &date_extractions {
if *field == cat_proposal.field { if *field == cat_proposal.field {
if let Some(derived_val) = extract_date_component(&v, fmt, *comp) { if let Some(derived_val) = extract_date_component(&v, fmt, *comp) {
if let Some(cat) = model.category_mut(derived_name) { if let Some(cat) = model.category_mut(derived_name) {

View File

@ -371,7 +371,7 @@ fn run_headless_script(script_path: &PathBuf, file: &Option<PathBuf>) -> Result<
// ── Helpers ────────────────────────────────────────────────────────────────── // ── Helpers ──────────────────────────────────────────────────────────────────
fn get_initial_model(file_path: &Option<PathBuf>) -> Result<Model> { fn get_initial_model(file_path: &Option<PathBuf>) -> Result<Model> {
if let Some(ref path) = file_path { if let Some(path) = file_path {
if path.exists() { if path.exists() {
let mut m = persistence::load(path) let mut m = persistence::load(path)
.with_context(|| format!("Failed to load {}", path.display()))?; .with_context(|| format!("Failed to load {}", path.display()))?;

View File

@ -2118,7 +2118,7 @@ mod parser_edge_cases {
// files. The generator and parser share a single source of truth: the grammar. // files. The generator and parser share a single source of truth: the grammar.
#[cfg(test)] #[cfg(test)]
mod gen { mod generator {
use pest_meta::ast::{Expr, RuleType}; use pest_meta::ast::{Expr, RuleType};
use pest_meta::parser; use pest_meta::parser;
use proptest::prelude::*; use proptest::prelude::*;
@ -2253,15 +2253,15 @@ mod gen {
// Use random bytes as entropy for choices in the grammar walk // Use random bytes as entropy for choices in the grammar walk
prop::collection::vec(any::<u8>(), 64..=256).prop_map(|choices| { prop::collection::vec(any::<u8>(), 64..=256).prop_map(|choices| {
let rules = load_grammar(); let rules = load_grammar();
let mut gen = Gen::new(&rules, choices); let mut g = Gen::new(&rules, choices);
gen.generate("file") g.generate("file")
}) })
} }
} }
#[cfg(test)] #[cfg(test)]
mod grammar_prop_tests { mod grammar_prop_tests {
use super::{format_md, gen, parse_md}; use super::{format_md, generator, parse_md};
use proptest::prelude::*; use proptest::prelude::*;
proptest! { proptest! {
@ -2269,7 +2269,7 @@ mod grammar_prop_tests {
/// parse(generate()) — every generated file parses without error. /// parse(generate()) — every generated file parses without error.
#[test] #[test]
fn generated_file_parses(file in gen::improv_file()) { fn generated_file_parses(file in generator::improv_file()) {
let result = parse_md(&file); let result = parse_md(&file);
prop_assert!(result.is_ok(), prop_assert!(result.is_ok(),
"Generated file failed to parse:\n{}\nError: {}", "Generated file failed to parse:\n{}\nError: {}",
@ -2278,7 +2278,7 @@ mod grammar_prop_tests {
/// parse(print(parse(generate()))) — round-trip through format is stable. /// parse(print(parse(generate()))) — round-trip through format is stable.
#[test] #[test]
fn generated_file_roundtrips(file in gen::improv_file()) { fn generated_file_roundtrips(file in generator::improv_file()) {
let result1 = parse_md(&file); let result1 = parse_md(&file);
// Skip inputs that don't parse (the grammar walk may produce // Skip inputs that don't parse (the grammar walk may produce
// degenerate inputs like empty model names) // degenerate inputs like empty model names)

View File

@ -121,7 +121,7 @@ impl View {
pub fn categories_on(&self, axis: Axis) -> Vec<&str> { pub fn categories_on(&self, axis: Axis) -> Vec<&str> {
self.category_axes self.category_axes
.iter() .iter()
.filter(|(_, &a)| a == axis) .filter(|&(_, &a)| a == axis)
.map(|(n, _)| n.as_str()) .map(|(n, _)| n.as_str())
.collect() .collect()
} }