From 3251fc436bb648c050fee3ea62ecd5917b0e1a60 Mon Sep 17 00:00:00 2001 From: Dek Date: Sun, 12 Apr 2026 21:30:21 +0200 Subject: [PATCH] Initial commit: Todo CLI app in rust --- .gitignore | 1 + Cargo.lock | 7 ++++ Cargo.toml | 6 ++++ src/main.rs | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 116 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..ba75f46 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "todo_cli" +version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..695c3a2 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "todo_cli" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..2aed11e --- /dev/null +++ b/src/main.rs @@ -0,0 +1,102 @@ +use std::vec; +use std::io; +struct Task{ + name: String, + priority: usize, + description: String, + done: bool, +} +impl Task{ + fn new(name: String, priority: usize, description: String)-> Task{ + Task{name,priority,description, done: false} + } + fn display(&self){ + println!("Tâche: {}. + Priorité: {} + Description: {}", self.name, self.priority,self.description) + } + fn task_done(&mut self){ + if !self.done{ + println!("La tâche {} à été effectué, bravo !", self.name); + self.done = true; + } + else{ + println!("La tâche {} à déjà été effectué.", self.name); + } + + + } + +} +struct TodoList{ + list_tasks: Vec, +} +impl TodoList{ + fn new()->TodoList{ + TodoList { list_tasks: Vec::new() } + } + fn create_task(&mut self,name: String, priority: usize, description: String){ + let task = Task::new(name, priority, description); + self.list_tasks.push(task); + } + fn add(&mut self, task: Task){ + self.list_tasks.push(task); + } + fn delete(&mut self, number: usize){ + self.list_tasks.remove(number); + } + fn list(&self){ + for (i,task) in self.list_tasks.iter().enumerate(){ + println!("{}: {} - Priorité: {}", i, task.name, task.priority); + } + } +} + + + +fn main() { + println!("Bienvenue dans le menu de la ToDoList APP !"); + let mut s1 = TodoList::new(); + + loop{ + println!("\n--- ToDoList APP ---"); + println!("Voici la liste des tâches"); + s1.list(); + println!("Vous pouvez; \n Pressez 1 pour créer une tâche.\n Pressez 2 pour supprimer une tâche \n Pressez 3 pour revoir la liste de tâche.\n Et écrire quit pour quitter l'application"); + let mut input = String::new(); + io::stdin().read_line(&mut input).expect("Failed to read"); + let input = input.trim(); + if(input=="1") { + let mut input2 = String::new(); + println!("Créons une tâche, veuillez entrer: Le nom de la tâche"); + io::stdin().read_line(&mut input2).expect("Failed to read"); + let input2 = input2.trim(); + let TacheName = input2; + println!("Créons une tâche, veuillez entrer: la priorité de cette dernière (chiffre de 1 à 5)"); + let mut input3 = String::new(); + io::stdin().read_line(&mut input3).expect("Failed to read"); + let input3 = input3.trim(); + let priority = input3; + println!("Créons une tâche, veuillez entrer: Une petite description"); + let mut input4 = String::new(); + io::stdin().read_line(&mut input4).expect("Failed to read"); + let input4 = input4.trim(); + let description = input4; + s1.create_task(TacheName.to_string(), priority.trim().parse().expect("Not a number!"), description.to_string()); + println!("La tâche à bien été crée !"); + s1.list(); + } + if(input=="2"){ + s1.list(); + println!("Veuillez choisir une tâche à supprimer"); + let mut input = String::new(); + io::stdin().read_line(&mut input).expect("Failed to read"); + let input = input.trim(); + s1.delete(input.trim().parse().expect("Not a number !")); + } + if(input =="3"){ + s1.list(); + } + +} +} \ No newline at end of file