闲得无聊,便想用rust来写写进度条的实现,参考来网上c语言版本的实现,遂用rust也写了一个。 废话不多说, 直接上代码:
use std::thread::sleep;
use std::time::Duration;
use std::io::prelude::*;
use std::io::{self, BufWriter, Write};
fn progress1(){
let mut _str: [char;101] = [' ';101];
let nchar:[char;4] = ['-','\\', '|', '/',];
let mut sw = BufWriter::new(io::stdout());
for progress_v in 0..=100usize{
// 注意 /r xxxx 和 xxxx /r的区别: 前者是先定位到行头再输出xxxx, 后者则是先输出xxxx,再定位到行头。
// 前者再mac osx上能正确地看到输出,后者则一直不显示输出。
sw.write_fmt(format_args!("\r{}",'['));
_str[progress_v] = '#';
for i in _str.iter(){
sw.write_fmt(format_args!("{}", i));
}
sw.write_fmt(format_args!("{}", ']'));
let _ = sw.write_fmt(format_args!("\t({:3}%)\t[{}]", progress_v, nchar[progress_v % 4]));
sw.flush();
sleep(Duration::from_millis(400));
}
}
fn main() {
progress1();
}
1
共 6 条评论, 1 页
评论区
写评论谢谢,rust 大法好
0..100: 0 <= x <100; 0..=100 : 0<= x <= 100
0..=100表示区间:[0,100]; 0..100表示区间:[0,100)
for progress_v in 0..=100usize
..= 这个语法是什么意思,怎么没有看到过
谢谢,谢谢分享
多谢分享。