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);
}
注意事项
- 不是所有终端都支持超链接功能,库会自动处理回退显示
- 在某些终端中可能需要右键点击链接而不是直接点击
- 链接功能在重定向输出或管道操作时通常会失效
terminal-link
是一个简单但强大的工具,可以显著提升命令行应用的用户体验,特别是需要引用在线资源时。