4 个版本 (2 个重大更改)

0.3.0 2024年7月17日
0.2.1 2024年6月6日
0.2.0 2022年3月22日
0.1.0 2022年3月14日

#162命令行界面

Download history 141/week @ 2024-06-01 19/week @ 2024-06-08 2/week @ 2024-06-15 104/week @ 2024-07-13 16/week @ 2024-07-20 100/week @ 2024-07-27 442/week @ 2024-08-03 394/week @ 2024-08-10 242/week @ 2024-08-17

每月下载量:1,179

MPL-2.0 许可证

145KB
4K SLoC

Pipeline Crates.io API reference

noline

noline 是一个与 IO 无关的 #[no_std] 行编辑器,为任何系统提供强大的行编辑功能。其核心功能不涉及 IO,因此可以适应任何系统,无论是嵌入式、异步、异步嵌入式、WASM 或 IPoAC(通过鸟类载体进行 IP 通信)。

功能

  • IO 无关
  • 最小依赖
  • 无需分配 - 提供基于堆和静态缓冲区
  • UTF-8 支持
  • Emacs 键绑定
  • 行历史记录

可能的未来功能

  • 自动完成和提示

API 应视为实验性的,将来可能会有所变化。

核心实现由一个状态机组成,该状态机以字节为输入,并生成字节切片的迭代器。由于这个过程不涉及任何 IO,noline 可以适应任何平台。

noline 包含多个实现

可以使用builder::EditorBuilder构建编辑器。

示例

use noline::{builder::EditorBuilder, sync_io::std_sync::StdIOWrapper, sync_io::IO};
use std::fmt::Write;
use std::io;
use termion::raw::IntoRawMode;

fn main() {
    let _stdout = io::stdout().into_raw_mode().unwrap();
    let prompt = "> ";

    let mut io = IO::<StdIOWrapper>::new(StdIOWrapper::new());

    let mut editor = EditorBuilder::new_unbounded()
        .with_unbounded_history()
        .build_sync(&mut io)
        .unwrap();

    while let Ok(line) = editor.readline(prompt, &mut io) {
        writeln!(io, "Read: '{}'", line).unwrap();
    }
}

更多详情请见文档

用法

将以下内容添加到您的Cargo.toml文件中

[dependencies]
noline = "0.3.0"

许可证

MPL-2.0

依赖项

~0.3–10MB
~106K SLoC