summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormo8it <mo8it@proton.me>2024-04-24 01:17:39 +0200
committermo8it <mo8it@proton.me>2024-04-24 01:17:39 +0200
commitedf57626129467dacc0c6f04b2ca00e64d5b2245 (patch)
tree845f23af4004d7a72fd06774d31e132d768d40dd /src
parentef02c6c6ab93adf64353c13d6f036d1cd4187af0 (diff)
Preallocate path
Diffstat (limited to 'src')
-rw-r--r--src/embedded.rs15
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(())
}