Rust终端链接库terminal-link的使用:为命令行应用添加可点击的超链接功能

terminal-link

在终端中创建可点击的链接

使用方法

use terminal_link::Link;

fn main() {
    let link = Link::new("DuckDuckGo", "https://duckDuckGo.com");
    println!("{}", link);
}

支持的终端

目前,支持可点击链接的终端列表可以参考这个Gist。

不足之处

该库不会在运行时检查终端是否实际支持可点击链接。此功能将在后续版本中实现。

许可证

根据Apache License, Version 2.0或MIT license许可使用。

完整示例代码

// 添加依赖到Cargo.toml
// terminal-link = "0.1.0"

use terminal_link::Link;

fn main() {
    // 创建一个新的链接,第一个参数是显示文本,第二个是URL
    let rust_link = Link::new("Rust官方网站", "https://www.rust-lang.org");
    let crates_link = Link::new("Crates.io", "https://crates.io");
    
    // 打印链接
    println!("欢迎访问 {} 和 {}", rust_link, crates_link);
    
    // 也可以直接创建并打印
    println!("{}", Link::new("GitHub", "https://github.com"));
}

安装

在项目目录中运行以下Cargo命令:

cargo add terminal-link

或者将以下内容添加到Cargo.toml文件中:

terminal-link = "0.1.0"

1 回复

Rust终端链接库terminal-link使用指南

terminal-link是一个Rust库,用于在终端应用中创建可点击的超链接。它可以让你的命令行工具输出包含可点击的链接,提升用户体验。

功能特点

  • 自动检测终端是否支持超链接
  • 简洁的API设计
  • 跨平台支持
  • 支持自定义显示文本

安装

Cargo.toml中添加依赖:

[dependencies]
terminal-link = "0.3"

基本用法

use terminal_link::Link;

fn main() {
    // 创建简单链接
    let link = Link::new("https://www.rust-lang.org", "Visit Rust Website");
    println!("{}", link);
    
    // 如果终端不支持超链接,会显示为 "Visit Rust Website <https://www.rust-lang.org>"
}

高级用法

自定义格式

use terminal_link::Link;

fn main() {
    let url = "https://crates.io/crates/terminal-link";
    let text = "Check out terminal-link on crates.io";
    
    // 使用builder模式自定义
    let link = Link::builder()
        .url(url)
        .text(text)
        .build();
    
    println!("Download here: {}", link);
}

检测终端支持

use terminal_link::supports_hyperlinks;

fn main() {
    if supports_hyperlinks() {
        println!("终端支持超链接");
    } else {
        println!("终端不支持超链接");
    }
}

直接生成链接字符串

use terminal_link::hyperlink;

fn main() {
    let link = hyperlink("https://example.com", "Example Website");
    println!("{}", link);
}

完整示例demo

use terminal_link::{Link, supports_hyperlinks, hyperlink};

fn main() {
    // 1. 检测终端是否支持超链接
    println!("=== 终端支持检测 ===");
    if supports_hyperlinks() {
        println!("当前终端支持超链接");
    } else {
        println!("当前终端不支持超链接");
    }
    println!();

    // 2. 基本用法示例
    println!("=== 基本用法 ===");
    let rust_link = Link::new("https://www.rust-lang.org", "Rust官网");
    println!("学习Rust: {}", rust_link);
    println!();

    // 3. 高级用法 - Builder模式
    println!("=== Builder模式 ===");
    let crates_link = Link::builder()
        .url("https://crates.io")
        .text("Rust包仓库")
        .build();
    println!("查找包: {}", crates_link);
    println!();

    // 4. 直接生成链接字符串
    println!("=== 直接生成链接 ===");
    let example_link = hyperlink("https://example.com", "示例网站");
    println!("访问: {}", example_link);
    println!();

    // 5. 实际应用场景 - 帮助信息
    println!("=== CLI工具帮助示例 ===");
    display_help();
}

// 帮助信息展示函数
fn display_help() {
    println!("MyCLI工具 - 帮助中心");
    println!();
    println!("可用命令:");
    println!("  help   显示帮助信息");
    println!("  run    运行程序");
    println!("  config 配置工具");
    println!();

    // 创建文档链接
    let docs_link = Link::new(
        "https://mycli-tool.com/docs",
        "在线文档"
    );
    
    // 创建问题反馈链接
    let feedback_link = Link::new(
        "https://mycli-tool.com/issues",
        "问题反馈"
    );
    
    println!("更多帮助: {}", docs_link);
    println!("遇到问题? {}", feedback_link);
}

注意事项

  1. 不是所有终端都支持超链接功能,库会自动处理回退显示
  2. 在某些终端中可能需要右键点击链接而不是直接点击
  3. 链接功能在重定向输出或管道操作时通常会失效

terminal-link是一个简单但强大的工具,可以显著提升命令行应用的用户体验,特别是需要引用在线资源时。

回到顶部