3个不稳定版本
0.2.0 | 2024年2月19日 |
---|---|
0.1.1 | 2024年1月20日 |
0.1.0 | 2024年1月14日 |
#185 in 图形API
每月下载 33 次
170KB
5K SLoC
libccanvas
libccanvas简化了创建ccanvas组件的过程。更多详细信息,请参阅ccanvas主仓库。
快速入门
当组件加载时,您的组件将由canvas运行,通过使用 Client::new(ClientConfig::default())
创建客户端来开始。
请将您的Rust项目命名为
ccanvas-XXXXX
格式,以便识别。
#[tokio::main]
async fn main() {
let mut client = Client::default();
client.hidecursor();
client.setchar(0, 0, 'H');
client.setchar(1, 0, 'e');
client.setchar(2, 0, 'l');
client.setchar(3, 0, 'l');
client.setchar(4, 0, 'o');
client.setchar(5, 0, '!');
// flush all changes
client.renderall().await;
// listen to all key presses
client.subscribe(Subscription::AllKeyPresses).await;
loop {
let event = client.recv().await;
// exit when 'q' is pressed
if let EventVariant::Key(key) = event.get() {
if key.code == KeyCode::Char('q') => {
client.exit().await;
break;
}
}
}
}
运行组件
您需要在您的系统上安装ccanvas。
- 使用cargo安装组件。
cargo install --path . # where `.` is your project directory
- 加载组件后运行ccanvas。
ccanvas hello ccanvas-hello # where `ccanvas-hello` is the command to run your component
您可以在/examples
中找到更多高级用法示例。
实现细节
这不仅仅是ccanvas绑定,这里是一些Client
在幕后为了简化开发者易用性所做的事情。
确认接收事件
当服务器(从现在起我将ccanvas的服务器简称为服务器)将事件传递给客户端时,它期望客户端确认它已收到事件,并确定事件是否应该传递给其他组件。
- 当
Event
超出作用域时,会自动发送确认。 - 您还可以使用
Event.done(true)
手动触发此行为。
处理响应
为了保持请求的顺序,客户端请求将等待直到服务器响应任务完成的确认。
自动自我销毁
当 Client
离开作用域时,它将自动调用自身的 drop
,从而将其从 ccanvas 会话中移除,避免出现“幽灵组件”的情况。
特性
请随意在非默认特性门控下向此 crate 添加您自己的 API/绑定/功能实现。有关更多信息,请查看 src/features
。
依赖
~3–14MB
~124K SLoC