首页 > 其他分享 >Rust 的 termion 库控制终端光标的位置

Rust 的 termion 库控制终端光标的位置

时间:2024-04-06 11:58:47浏览次数:25  
标签:use unwrap stdout cursor termion Rust 光标

在控制台应用程序中,固定打印在屏幕的第一行通常涉及到控制终端光标的位置。Rust 标准库本身并不提供直接控制终端光标位置的功能,但你可以使用第三方库如 termion 来实现这个需求。

termion 是一个用于处理终端的 Rust 库,它提供了很多有用的功能,包括控制光标位置、颜色和样式等。

下面是一个使用 termion 来在终端第一行显示动态信息的例子:

extern crate termion; // 引入 termion 库

use std::io::{stdout, Write};
use std::thread::sleep;
use std::time::Duration;
use termion::cursor; // 引入 cursor 模块来控制光标位置
use termion::terminal_size; // 引入 terminal_size 来获取终端大小

fn main() {
    let stdout = stdout();
    let mut stdout = stdout.lock();

    for i in 0..10 {
        // 移动光标到第一行开头
        write!(stdout, "{}", cursor::Goto(1, 1)).unwrap();
        // 清除从光标位置到行尾的内容
        write!(stdout, "{}", termion::clear::CurrentLine).unwrap();
        // 打印动态信息
        write!(stdout, "Progress: {}%", i * 10).unwrap();
        // 刷新输出缓冲区
        stdout.flush().unwrap();
        // 等待一段时间
        sleep(Duration::from_millis(500));
    }
}

在这个例子中,我们首先引入了 termion 库,并使用了 cursor::Goto 结构体来移动光标到第一行的开头。然后,我们使用 termion::clear::CurrentLine 来清除从当前光标位置到行尾的内容,以确保我们打印的信息始终在同一行显示。接下来,我们打印动态信息,并刷新输出缓冲区以确保内容被立即显示。最后,我们等待一段时间来模拟动态更新的效果。

请注意,为了运行这个示例,你需要在你的 Cargo.toml 文件中添加 termion 作为依赖项:

[dependencies]
termion = "1.5" # 使用适合你的项目的最新版本

然后,你可以使用 cargo buildcargo run 命令来构建和运行你的程序。

标签:use,unwrap,stdout,cursor,termion,Rust,光标
From: https://blog.csdn.net/quicmous/article/details/137252001

相关文章

  • 用Rust反爬虫,这里有你要的教程和代码
    Everwantedtomesswithpeoplescanningthewebforvulnerabilities?Icertainlydid.ThisisthestoryhowIfoundawaytopunishthem,thenusedRusttoimproveit,andthenkilledmywebserverusingavan.有没有想过给那些总是利用网络漏洞搞爬虫的人添......
  • 30天拿下Rust之超级好用的“语法糖”
    概述        Rust语言的设计非常注重开发者的体验,因此它包含了许多实用的“语法糖”。这些“语法糖”让代码更简洁、易读,同时保持了语言的强大和灵活性。1、字符串插值        字符串插值允许我们在字符串中嵌入变量或表达式的值,使用{}作为占位符。fnmai......
  • rust 面向对象编程特性、模式与模式匹配、高级特征
    面向对象编程OOP学习了结构体、枚举,它们可以包含自定义数据字段,也可以定义内部方法,它们提供了与对象相同的功能。面向对象的四大特征:封装、继承、多态通过pub标记为公有的结构体,在其他模块中可以访问使用这个结构体。但是对于结构体内部字段,如果不用pub,则仍是私有的,则可以通过......
  • Rust语言基础:语法、数据类型与操作符
    Rust语言基础:语法、数据类型与操作符Rust是一种系统编程语言,致力于安全、并发和实用性。它是由Mozilla基金会开发的,并得到了广泛的应用。在本篇文章中,我们将带你了解Rust的基础知识,包括语法、数据类型和操作符。1.Rust的语法Rust的语法类似于C++和Java,但同时又更加简洁......
  • 为什么可以使用TrustZone和CCA来构建TEE
    前言    使用ARMTrustZone和CCA来构建可信执行环境基于这两种技术提供的安全特性和目标。它们各自在不同层面提供硬件级别的安全保障和隔离,能够有效地保护代码和数据在执行时不被操作系统或其他应用访问,即使是在有高级权限的软件也无法突破这一保护。这种安全级别对......
  • Macros --The Magic Wand of Rust
    HelloandwelcometothewonderfulworldofRustmacros!Today,wewillembarkonanexcitingadventuretogethertoexplorethemagicalpowersofRustmacros.Areyouready?Bringyourcuriosityandlet'sgo!InRust,macrosarelikewizardsofprogr......
  • Rust Thread Adventure
    HelloeveryoneandwelcometothewonderfulworldofRustMultithreading!Today,we'regoingtoexplorethisexcitingareatogether.Areyouready?Buckleupandlet'sgo!InRust,threadsarelikethesuperheroesofyourprogram.Theycanperfo......
  • Rust中声明变量的方式
    letmutguess=String::new();在Rust中,一般使用let声明变量,比如letapples=5;这行代码声明了一个名为apples的变量,并绑定其变量值为5,在Rust中变量默认是不可变的immutable。意味着一旦给变量赋值后,其值不会发生改变。需要声明可变的变量,需要在变量名之前加mut,比如letappl......
  • Rust vs C++:2024,谁更懂错误处理?
    讲动人的故事,写懂人的代码「席双嘉,听说你的C++项目又因为忘了检查返回值导致内存泄漏,又加班了?」周五中午,在国内某科技巨头熙熙攘攘的员工餐厅,贾克强半开玩笑地戳了戳坐在隔壁的席双嘉,眼神中满是戏谑。贾克强,一个热衷于Rust的程序员,总是乐于挑战和探索新技术的边界。而席......
  • Mac 安装rustscan
    1. 安装docker.https://desktop.docker.com/mac/main/amd64/Docker.dmg?_gl=1*14rgpxs*_ga*MTI2ODM5NDc4Mi4xNzEyMDYyNzAw*_ga_XJWPQMJYHQ*MTcxMjA2MjcwMC4xLjEuMTcxMjA2MjcyOC4zMi4wLjA.2.打开docker应用程序open/Applications/Docker.app3.  4. 配置命令别名:......