#input #user-input #constraints #constrained #input-stream #string #validation

constrained-inputs

一个用于限制 io 输入的crate

3 个版本

0.1.2 2024年6月9日
0.1.1 2024年6月9日
0.1.0 2024年6月9日

5#受限

每月下载量 25 次

MIT 许可证

12KB
156

受限输入

受限输入是一个Rust crate,简化了使用特定类型约束和验证处理用户输入的过程。此crate提供了一种定义和应用于用户输入以确保输入满足某些标准然后再被接受的方法。

特性

  • 易于使用的输入解析和提示
  • 自定义字符串和数字的约束
  • 详细的无效输入和约束违规错误处理

用法

基本输入解析

您可以使用输入函数将用户输入直接解析为指定类型。

use constrained_inputs::input;

fn main() {
    let int: i32 = input().expect("Input was invalid");
    println!("Your input integer: {}", int);
}

受限输入解析

使用受限_input 函数提示用户输入,并附加额外的约束。

use constrained_inputs::{constrained_input, constraints::NumberConstraint};

fn main() {
    let constraint = NumberConstraint {
        max: Some(100),
        min: Some(10),
    };
    let int: i32 = constrained_input(constraint).expect("Input was invalid or out of range");
    println!("Your constrained input integer: {}", int);
}

约束

约束模块提供了各种约束配置,可用于应用用户输入。这些包括字符串和数字的约束。

字符串约束

为字符串定义约束,例如最大长度、最小长度和黑名单字符。

use constrained_inputs::constraints::{StringConstraint, Constraint, ConstraintResult, ConstraintError};

fn main() {
    let string_constraint = StringConstraint {
        max_len: Some(10),
        min_len: Some(5),
        blacklist_chars: vec!['a', 'e', 'i', 'o', 'u'],
    };

    let result = string_constraint.validate(&"hello");
    assert_eq!(result, ConstraintResult::Err(ConstraintError::BlacklistedChar));
}

数字约束

为数字定义约束,例如最大值和最小值。

use constrained_inputs::constraints::{NumberConstraint, Constraint, ConstraintResult};

fn main() {
    let number_constraint = NumberConstraint {
        max: Some(100),
        min: Some(10),
    };

    let result = number_constraint.validate(&50);
    assert_eq!(result, ConstraintResult::Valid);
}

输入流

一个从 bufreader 读取数据流的函数。

fn main() {
    let cursor = io::Cursor::new("123");

    let res = input_stream::<i32, _>(cursor);

    assert_eq!(123, res.unwrap());
}

依赖

~10KB