diff --git a/exercises/10_modules/modules2.rs b/exercises/10_modules/modules2.rs index 782a70eace..97f01fff4c 100644 --- a/exercises/10_modules/modules2.rs +++ b/exercises/10_modules/modules2.rs @@ -20,7 +20,7 @@ mod delicious_snacks { fn main() { println!( "favorite snacks: {} and {}", - delicious_snacks::fruit, - delicious_snacks::veggie, + delicious_snacks::FRUIT, + delicious_snacks::VEGGIE, ); } diff --git a/solutions/10_modules/modules2.rs b/solutions/10_modules/modules2.rs index 55c316d706..fb0a677920 100644 --- a/solutions/10_modules/modules2.rs +++ b/solutions/10_modules/modules2.rs @@ -1,7 +1,7 @@ mod delicious_snacks { // Added `pub` and used the expected alias after `as`. - pub use self::fruits::PEAR as fruit; - pub use self::veggies::CUCUMBER as veggie; + pub use self::fruits::PEAR as FRUIT; + pub use self::veggies::CUCUMBER as VEGGIE; mod fruits { pub const PEAR: &str = "Pear"; @@ -17,7 +17,7 @@ mod delicious_snacks { fn main() { println!( "favorite snacks: {} and {}", - delicious_snacks::fruit, - delicious_snacks::veggie, + delicious_snacks::FRUIT, + delicious_snacks::VEGGIE, ); } diff --git a/src/init.rs b/src/init.rs index 3ccef756d8..139e922763 100644 --- a/src/init.rs +++ b/src/init.rs @@ -3,7 +3,6 @@ use crossterm::{ QueueableCommand, style::{Attribute, Color, ResetColor, SetAttribute, SetForegroundColor}, }; -use serde::Deserialize; use std::{ env::{current_dir, set_current_dir}, fs::{self, create_dir}, @@ -17,22 +16,17 @@ use crate::{ info_file::InfoFile, term::press_enter_prompt, }; -#[derive(Deserialize)] -struct CargoLocateProject<'a> { - #[serde(borrow)] - root: &'a Path, -} - pub fn init() -> Result<()> { let rustlings_dir = Path::new("rustlings"); if rustlings_dir.exists() { bail!(RUSTLINGS_DIR_ALREADY_EXISTS_ERR); } - let locate_project_output = Command::new("cargo") + let mut locate_project_output = Command::new("cargo") .arg("locate-project") .arg("-q") .arg("--workspace") + .arg("--message-format=plain") .stdin(Stdio::null()) .stderr(Stdio::null()) .output() @@ -66,15 +60,14 @@ pub fn init() -> Result<()> { bail!(IN_INITIALIZED_DIR_ERR); } - let workspace_manifest = - serde_json::de::from_slice::(&locate_project_output.stdout) - .context( - "Failed to read the field `root` from the output of `cargo locate-project …`", - )? - .root; + // Remove newline + locate_project_output.stdout.pop(); + + let workspace_manifest = String::try_from(locate_project_output.stdout) + .context("Failed to convert the output of `cargo locate-project …` to a string")?; - let workspace_manifest_content = fs::read_to_string(workspace_manifest) - .with_context(|| format!("Failed to read the file {}", workspace_manifest.display()))?; + let workspace_manifest_content = fs::read_to_string(&workspace_manifest) + .with_context(|| format!("Failed to read the file {workspace_manifest}"))?; if !workspace_manifest_content.contains("[workspace]") && !workspace_manifest_content.contains("workspace.") {