diff options
| author | mo8it <mo8it@proton.me> | 2024-04-24 01:17:39 +0200 |
|---|---|---|
| committer | mo8it <mo8it@proton.me> | 2024-04-24 01:17:39 +0200 |
| commit | edf57626129467dacc0c6f04b2ca00e64d5b2245 (patch) | |
| tree | 845f23af4004d7a72fd06774d31e132d768d40dd /src/embedded.rs | |
| parent | ef02c6c6ab93adf64353c13d6f036d1cd4187af0 (diff) | |
Preallocate path
Diffstat (limited to 'src/embedded.rs')
| -rw-r--r-- | src/embedded.rs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/embedded.rs b/src/embedded.rs index 2de3b1c..756b414 100644 --- a/src/embedded.rs +++ b/src/embedded.rs @@ -43,7 +43,13 @@ struct ExerciseDir { impl ExerciseDir { fn init_on_disk(&self) -> Result<()> { - let dir_path = format!("exercises/{}", self.name); + let path_prefix = "exercises/"; + let readme_path_postfix = "/README.md"; + let mut dir_path = + String::with_capacity(path_prefix.len() + self.name.len() + readme_path_postfix.len()); + dir_path.push_str(path_prefix); + dir_path.push_str(self.name); + if let Err(e) = create_dir(&dir_path) { if e.kind() == io::ErrorKind::AlreadyExists { return Ok(()); @@ -54,8 +60,11 @@ impl ExerciseDir { ); } - WriteStrategy::Overwrite - .write(&format!("exercises/{}/README.md", self.name), self.readme)?; + let readme_path = { + dir_path.push_str(readme_path_postfix); + dir_path + }; + WriteStrategy::Overwrite.write(&readme_path, self.readme)?; Ok(()) } |
