In this article I am going to show you how to make a dynamic menu in Rust. First of all, let's add a lightweight keyboard event handler, I'll use k_board.
cargo add k_board
Then let's put together the program logic and match the results after receiving the enter as a parameter.
use std::io::Write;
fn main() {
let mut option: u8 = 0;
show_option('*', ' ');
for key in k_board::Keyboard::new() {
match key {
k_board::Keys::Up => option = 0 ,
k_board::Keys::Down => option = 1,
k_board::Keys::Enter => break,
_ => {}
}
match option {
0 => show_option('*', ' '),
1 => show_option(' ', '*'),
_ => {}
}
}
clear_screen();
println!("Enter the text you want to print");
let mut text: String = String::new();
let _ = std::io::stdout().flush();
std::io::stdin().read_line(&mut text).expect("Error");
clear_screen();
match option {
0 => {
println!("{}", text);
}
1 => unsafe {
printf("%s\0".as_ptr(), text.as_ptr());
},
_ => {}
}
}
fn clear_screen() {
std::process::Command::new("clear").status().unwrap();
}
fn show_option(op1: char, op2: char) {
clear_screen();
println!(
"{} print in RUST\n{} print in C",
op1, op2
);
}
extern "C" {
fn printf(format: *const u8, ...) -> i32;
}
Top comments (0)