#termbox2 #terminal #gui

rustbox2

termbox2库的Rust实现

1 个不稳定版本

使用旧的Rust 2015

0.0.1 2022年6月21日

#905 in #gui

MIT 许可证

23KB
507 行代码(不包括注释)

Rustbox2

Rustbox2是termbox2的Rust实现。

目前,这只是一个nsf的C库的包装,但我的计划是将它转换为纯Rust实现,并移除对C库的依赖。

此实现的原始灵感来自Aaron Pribadi,所以对于他的原始工作给予极大的敬意。

注意 这还在开发中,API可能会随着我对Rust的更多了解以及语言本身的变更而更改

用法

在你的 Cargo.toml 中添加以下内容

[dependencies.rustbox]
git = "https://github.com/yymirror/rustbox2.git"

然后,在你的 src/example.rs

#![feature(core)]

extern crate rustbox2;

use std::error::Error;
use std::default::Default;

use rustbox2::{Color, RustBox};
use rustbox2::Key;

fn main() {
    let rustbox = match RustBox::init(Default::default()) {
        Result::Ok(v) => v,
        Result::Err(e) => panic!("{}", e),
    };

    rustbox.print(1, 1, rustbox::RB_BOLD, Color::White, Color::Black, "Hello, world!");
    rustbox.print(1, 3, rustbox::RB_BOLD, Color::White, Color::Black,
                  "Press 'q' to quit.");
    rustbox.present();
    loop {
        match rustbox.poll_event(false) {
            Ok(rustbox::Event::KeyEvent(key)) => {
                match key {
                    Key::Char('q') => { break; }
                    _ => { }
                }
            },
            Err(e) => panic!("{}", e.description()),
            _ => { }
        }
    }
}

注意: 此示例也可以使用 cargo run --example hello-world 运行。

依赖项

~2–10MB
~110K SLoC