#user-input #automatic #conversion #stdio #basic #extension #fs-file

input_conv

将基本输入自动转换为指定类型的标准stdio扩展

5个稳定版本

1.2.0 2023年7月31日
1.1.1 2023年7月28日
1.1.0 2023年7月27日
1.0.1 2023年7月27日

#25 in #stdio

每月29次下载

MIT/Apache

12KB
192

输入转换包

此包包含一个简单的库,用于读取用户输入并将输入保存到给定类型的变量中。

此包旨在简化读取用户输入的方式,避免对简单、单类型输入的重复处理和解析。

这是Rust包发布的入门级尝试,可能未经过优化。 不建议用于官方项目。


版本历史

版本 1.0.0:添加了标准用户输入的基本库

版本 1.0.1:更新了README

版本 1.1.0:添加了字符向量和未修剪字符串的返回类型。添加了整数处理不正确的小数和'-'符号。

版本 1.1.1:优化了大小

版本 1.2.0:添加了文件行读取函数,以用于迭代器


可用的包函数

//Crate uses:
// std::fs::File;
// std::io::{self, BufRead, BufReader};

//Function names and return types:

/* User IO functions: */

pub fn read_string() -> String

pub fn read_charvec() -> Vec<char>

pub fn read_string_notrim() -> String

pub fn read_u32() -> u32

pub fn read_i32() -> i32

pub fn read_u64() -> u64

pub fn read_i64() -> i64

pub fn read_f32() -> f32

pub fn read_f64() -> f64

pub fn read_u8() -> u8

pub fn read_char() -> char

/**********/

/* File line reading info & functions: */
//The file reader should be used with an iterator

//A struct and implementation is used to track the current line position and data

pub struct LineReader<> {
    reader: BufReader<File>,
    current_line: String,
}

// The returned data exist as IO result options, and should be processed using <data>.unwrap() when the data needs to be used

impl<'a> LineReader<> {
    pub fn new(file_path: &str) -> io::Result<Self> 

    pub fn get_next_line(&mut self) -> io::Result<Option<String>> 

    pub fn get_current_line(&self) -> &str

    pub fn get_file_next_string(&mut self) -> io::Result<Option<String>> //string ; get_next_line() wrapper

    pub fn get_file_next_char(&mut self) -> io::Result<Option<char>> //char

    pub fn get_file_next_uint(&mut self) -> io::Result<Option<u64>> //uint 64

    pub fn get_file_next_int(&mut self) -> io::Result<Option<i64>> //int 64

    pub fn get_file_next_unsigned_float(&mut self) -> io::Result<Option<f64>> //float 64
}

/**********/

文件迭代器的示例实现

    let file_path = "./path/to/file.txt";
    let mut line_reader = match input_conv::LineReader::new(file_path) {
        Ok(lr) => lr,
        Err(e) => {
            eprintln!("Error: {}", e);
            return;
        }
    };

    while let Some(line) = line_reader.get_file_next_string().unwrap() {
        println!("File line: {}", line);
    }


潜在更新:重构以将功能拆分为单独的模块

无运行时依赖