pancurses is a curses libary for Rust that supports both Linux and Windows by abstracting away the backend that it uses (ncurses-rs and pdcurses-sys respectively).
The aim is to provide a more Rustic interface over the usual curses functions for ease of use while remaining close enough to curses to make porting easy.
ncurses-rs links with the native ncurses library so that needs to be installed so that the linker can find it.
Check ncurses-rs for more details.
pdcurses-sys compiles the native PDCurses library as part of the build process, so you need to have a compatible C compiler available that matches the ABI of the version of Rust you're using (so either gcc for the GNU ABI or cl for MSVC)
Check pdcurses-sys for more details.
Cargo.toml
[dependencies]
pancurses = "0.6"
main.rs
extern crate pancurses;
use pancurses::{initscr, endwin};
fn main() {
let window = initscr();
window.printw("Hello Rust");
window.refresh();
window.getch();
endwin();
}
extern crate pancurses;
use pancurses::{initscr, endwin, Input, noecho};
fn main() {
let window = initscr();
window.printw("Type things, press delete to quit\n");
window.refresh();
window.keypad(true);
noecho();
loop {
match window.getch() {
Some(Input::Character(c)) => { window.addch(c); },
Some(Input::KeyDC) => break,
Some(input) => { window.addstr(&format!("{:?}", input)); },
None => ()
}
}
endwin();
}
Most of the often used curses functions are added, I've ported a handful of the PDCurses demos to demonstrate how to use this library. Once all the functions are added I'll begin revising the API to be more Rust-like (less using integer return values for errors and instead using Result, for example)
Licensed under the MIT license, see LICENSE.md