#学习 #示例 #命令行界面

code-tour

增强基于示例的学习,即令人惊叹的示例用户体验

2个不稳定版本

0.2.0 2020年10月8日
0.1.0 2020年7月21日

#453 in 可视化

BSD-3-Clause

13KB
174

Logo, just triangles
代码巡游

简介

本项目试图改进Rust基于示例的学习方法。

想象以下示例文件

#[derive(Debug)]
struct S {
    x: i32,
    y: i32,
}

fn main() {
    // Declare something.
    // Because it's an example.
    let a = S { x: 7, y: 42 };

    let b = a.x + a.y;

    // Here is the result!
    let c = b + 1;
}

当使用 cargo run --example foo 运行示例时,没有任何输出!这意味着示例的作者必须每次都添加 println!dbg! 指令。此外,用户可能会错过注释,这真是太不幸了。

进入 code_tour.

让我们将示例重写如下

use code_tour::code_tour;

#[derive(Debug)]
struct S {
    x: i32,
    y: i32,
}

#[code_tour]
fn main() {
    /// Declare something.
    /// Because it's an example.
    let a = S { x: 7, y: 42 };

    let b = a.x + a.y;

    /// Here is the result!
    let c = b + 1;
}

让我们像以前一样重新执行示例,我们将看到

$ cargo run --example foo

cargo run example

示例注释在执行过程中被复制到输出中。

注释必须是类型为 ////** */ 的注释,该注释引入了一个 let 绑定。这就是目前的所有内容!

交互式模式

使用 --features interactive 运行示例后,每次代码执行步骤完成后都会显示“按Enter键继续,否则按Ctrl-C退出。”的消息。

$ cargo run --example foo --features interactive

cargo run example interactive

静默模式

设置环境变量 CODE_TOUR_QUIET 以运行示例,将使 code-tour 变得静默。请注意,它不会禁用交互式模式(这是故意的)。

$ CODE_TOUR_QUIET=1 cargo run --example foo

更好的源代码显示

使用 cargo +nightly 运行示例将使用 Span::source_text 生成更好的代码输出。

$ cargo +nightly run --example foo

安装

这是一个经典的Rust项目,因此将 code_tour 添加到您的 Cargo.toml 文件中,然后就可以了。

许可证

BSD-3-Clause,见 LICENSE.md

依赖

~1.2–1.7MB
~36K SLoC