Initial commit: Todo CLI app in rust

This commit is contained in:
Dek
2026-04-12 21:30:21 +02:00
commit 3251fc436b
4 changed files with 116 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/target

7
Cargo.lock generated Normal file
View File

@@ -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"

6
Cargo.toml Normal file
View File

@@ -0,0 +1,6 @@
[package]
name = "todo_cli"
version = "0.1.0"
edition = "2024"
[dependencies]

102
src/main.rs Normal file
View File

@@ -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<Task>,
}
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();
}
}
}