nz-ei

Crates.ionz-ei
lib.rsnz-ei
version0.1.0
created_at2025-10-12 07:12:24.406176+00
updated_at2025-10-12 07:12:24.406176+00
descriptionA simple Rust library for easy input handling from stdin
homepage
repositoryhttps://github.com/ArtNazarov/nz-ei
max_upload_size
id1879016
size27,613
Artem Nazarov (ArtNazarov)

documentation

README

Nz_ei

Простая библиотека Rust для легкой обработки ввода из стандартного потока ввода

Особенности

  • Получение численных значений любого типа с помощью get_numeric_value()
  • Получение строк с помощью get_string()
  • Ввод векторов значений различными способами
  • Ввод матриц (двумерных массивов)
  • Поддержка пользовательских приглашений для ввода
  • Парсинг вводимой информации типобезопасен
  • Простота использования и минималистичный API

Использование

Добавить в Cargo.toml:

[dependencies]
nz_ei = { git = "https://github.com/ArtNazarov/nz-ei }

Основные функции

Ввод одиночных значений

use nz_ei::Input;

// Ввод числа с приглашением
let age: u32 = Input::get_numeric_with_prompt("Введите ваш возраст: ");

// Ввод числа без приглашения
let number: i32 = Input::get_numeric_value();

// Ввод строки с приглашением
let name = Input::get_string_with_prompt("Введите ваше имя: ");

// Ввод строки без приглашения
let text = Input::get_string();

Ввод векторов значений

1. Ввод вектора с разделением по пробелам

// Ввод нескольких чисел, разделенных пробелами
let numbers: Vec<i32> = Input::get_vector_with_prompt("Введите числа через пробел: ");

// Без приглашения
let values: Vec<f64> = Input::get_vector();

2. Ввод точно N значений

// Ввод ровно 5 чисел (игнорирует лишние)
let five_numbers: Vec<i32> = Input::get_vector_n_with_prompt("Введите 5 чисел: ", 5);

// Без приглашения
let three_values: Vec<f64> = Input::get_vector_n(3);

3. Ввод вектора с указанием количества

// Сначала запрашивает количество элементов, затем сами элементы
let data: Vec<i32> = Input::get_vector_with_count();

Ввод матриц (двумерных массивов)

1. Ввод матрицы произвольного размера

// Ввод матрицы до пустой строки
let matrix: Vec<Vec<i32>> = Input::get_matrix_with_prompt("Введите матрицу:");

// Без приглашения
let matrix: Vec<Vec<f64>> = Input::get_matrix();

2. Ввод матрицы заданных размеров

// Ввод матрицы 3x4 (3 строки, 4 столбца)
let matrix: Vec<Vec<i32>> = Input::get_matrix_by_dimensions(3, 4);

// С приглашением
let matrix: Vec<Vec<f64>> = Input::get_matrix_by_dimensions_with_prompt(
    "Введите матрицу 2x3:", 2, 3
);

3. Ввод матрицы с указанием размеров

// Сначала вводятся размеры, затем сама матрица
let matrix: Vec<Vec<i32>> = Input::get_matrix_with_sizes();

// С приглашением
let matrix: Vec<Vec<f64>> = Input::get_matrix_with_sizes_with_prompt(
    "Введите размеры и матрицу:"
);

Упрощенные функции

Библиотека также предоставляет упрощенные функции для прямого вызова:

use nz_ei::{
    get_numeric_value, get_string, 
    get_vector, get_vector_n, get_vector_with_count,
    get_matrix, get_matrix_by_dimensions, get_matrix_with_sizes
};

let x: i32 = get_numeric_value();
let name = get_string();
let numbers: Vec<f64> = get_vector();
let limited: Vec<i32> = get_vector_n(3);
let counted: Vec<u32> = get_vector_with_count();
let matrix: Vec<Vec<i32>> = get_matrix();
let sized_matrix: Vec<Vec<f64>> = get_matrix_by_dimensions(2, 2);
let auto_matrix: Vec<Vec<i32>> = get_matrix_with_sizes();

Полный пример

use nz_ei::Input;

fn main() {
    println!("=== Демонстрация библиотеки Easy Input ===");

    // 1. Ввод одиночных значений
    let number: i32 = Input::get_numeric_with_prompt("Введите число: ");
    let name = Input::get_string_with_prompt("Введите имя: ");

    // 2. Ввод векторов
    let vector: Vec<i32> = Input::get_vector_with_prompt("Введите числа через пробел: ");
    let limited_vector: Vec<i32> = Input::get_vector_n_with_prompt("Введите 3 числа: ", 3);

    // 3. Ввод матриц
    println!("\nВвод матрицы произвольного размера:");
    let matrix1: Vec<Vec<i32>> = Input::get_matrix();
    
    println!("\nВвод матрицы 2x3:");
    let matrix2: Vec<Vec<i32>> = Input::get_matrix_by_dimensions(2, 3);
    
    println!("\nВвод матрицы с указанием размеров:");
    let matrix3: Vec<Vec<f64>> = Input::get_matrix_with_sizes();

    // 4. Использование упрощенных функций
    let simple_matrix: Vec<Vec<i32>> = nz_ei::get_matrix_by_dimensions(2, 2);

    println!("Результаты:");
    println!("Число: {}, Имя: {}", number, name);
    println!("Вектор: {:?}", vector);
    println!("Ограниченный вектор: {:?}", limited_vector);
    println!("Матрица 1: {:?}", matrix1);
    println!("Матрица 2: {:?}", matrix2);
    println!("Матрица 3: {:?}", matrix3);
    println!("Простая матрица: {:?}", simple_matrix);
}

Форматы ввода матриц

get_matrix()

1 2 3
4 5 6
7 8 9
[пустая строка]

get_matrix_by_dimensions(2, 3)

Строка 1: 1 2 3
Строка 2: 4 5 6

get_matrix_with_sizes()

2 3     # размеры: 2 строки, 3 столбца
1 2 3   # первая строка
4 5 6   # вторая строка

Обработка ошибок

Библиотека обрабатывает следующие ошибки:

  • Ошибки ввода из stdin
  • Ошибки парсинга неверного формата чисел
  • Недостаточное количество элементов при использовании get_vector_n()
  • Некорректные размеры матриц
  • Несоответствие размеров введенных данных ожидаемым

При возникновении ошибок библиотека вызывает панику с понятным описанием проблемы.

Типы данных

Библиотека поддерживает все типы, реализующие трейт FromStr:

  • Целочисленные: i8, i16, i32, i64, i128, isize
  • Беззнаковые: u8, u16, u32, u64, u128, usize
  • Вещественные: f32, f64
  • Любые пользовательские типы с реализованным FromStr

Преимущества

  • 🚀 Простота использования - минимальный boilerplate код
  • 🛡️ Типобезопасность - проверки на этапе компиляции
  • 📝 Гибкость - различные способы ввода данных
  • 🎯 Надежность - четкие сообщения об ошибках
  • 📚 Документация - полное описание всех функций
  • 🏗️ Универсальность - поддержка скаляров, векторов и матриц

Лицензия

MIT

Commit count: 0

cargo fmt