Skip to main content

CollectionArgument

Trait CollectionArgument 

Source
pub trait CollectionArgument {
    // Required methods
    fn require_non_empty(&self, name: &str) -> ArgumentResult<&Self>;
    fn require_length_be(
        &self,
        name: &str,
        length: usize,
    ) -> ArgumentResult<&Self>;
    fn require_length_at_least(
        &self,
        name: &str,
        min_length: usize,
    ) -> ArgumentResult<&Self>;
    fn require_length_at_most(
        &self,
        name: &str,
        max_length: usize,
    ) -> ArgumentResult<&Self>;
    fn require_length_in_range(
        &self,
        name: &str,
        min_length: usize,
        max_length: usize,
    ) -> ArgumentResult<&Self>;
}
Expand description

§Collection Argument Validation Trait

Provides length and content validation functionality for collection types like slices, Vec, arrays, etc.

§Features

  • Non-empty checking support
  • Length validation support
  • Element validation support
  • Method chaining support

§Use Cases

  • Validating function parameter collections
  • Configuration array checking
  • User input list validation

§Examples

Basic usage (returns ArgumentResult):

use qubit_argument::argument::{CollectionArgument, ArgumentResult};

fn process_items(items: &[String]) -> ArgumentResult<()> {
    let items = items.require_non_empty("items")?;
    println!("Processing {} items", items.len());
    Ok(())
}

Converting to other error types:

use qubit_argument::argument::CollectionArgument;

fn process_items(items: &[String]) -> Result<(), String> {
    let items = items
        .require_non_empty("items")
        .and_then(|i| i.require_length_in_range("items", 1, 100))
        .map_err(|e| e.to_string())?;
    println!("Processing {} items", items.len());
    Ok(())
}

Required Methods§

Source

fn require_non_empty(&self, name: &str) -> ArgumentResult<&Self>

Validate that the collection is not empty

§Parameters
  • name - Parameter name
§Returns

Returns Ok(self) if the collection is not empty, otherwise returns an error

§Examples
use qubit_argument::argument::CollectionArgument;

let items = vec![1, 2, 3];
assert!(items.require_non_empty("items").is_ok());

let empty: Vec<i32> = vec![];
assert!(empty.require_non_empty("items").is_err());
Source

fn require_length_be(&self, name: &str, length: usize) -> ArgumentResult<&Self>

Validate that the collection length equals the specified value

§Parameters
  • name - Parameter name
  • length - Expected length
§Returns

Returns Ok(self) if the length matches, otherwise returns an error

§Examples
use qubit_argument::argument::CollectionArgument;

let coordinates = vec![1, 2, 3];
assert!(coordinates.require_length_be("coordinates", 3).is_ok());
Source

fn require_length_at_least( &self, name: &str, min_length: usize, ) -> ArgumentResult<&Self>

Validate that the collection length is at least the specified value

§Parameters
  • name - Parameter name
  • min_length - Minimum length
§Returns

Returns Ok(self) if the length is not less than the minimum, otherwise returns an error

§Examples
use qubit_argument::argument::CollectionArgument;

let items = vec![1, 2, 3, 4, 5];
assert!(items.require_length_at_least("items", 3).is_ok());
Source

fn require_length_at_most( &self, name: &str, max_length: usize, ) -> ArgumentResult<&Self>

Validate that the collection length is at most the specified value

§Parameters
  • name - Parameter name
  • max_length - Maximum length
§Returns

Returns Ok(self) if the length is not greater than the maximum, otherwise returns an error

§Examples
use qubit_argument::argument::CollectionArgument;

let items = vec![1, 2, 3];
assert!(items.require_length_at_most("items", 10).is_ok());
Source

fn require_length_in_range( &self, name: &str, min_length: usize, max_length: usize, ) -> ArgumentResult<&Self>

Validate that the collection length is within the specified range

§Parameters
  • name - Parameter name
  • min_length - Minimum length (inclusive)
  • max_length - Maximum length (inclusive)
§Returns

Returns Ok(self) if the length is within range, otherwise returns an error

§Examples
use qubit_argument::argument::CollectionArgument;

let items = vec![1, 2, 3];
assert!(items.require_length_in_range("items", 1, 10).is_ok());

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<T> CollectionArgument for [T]

Source§

fn require_non_empty(&self, name: &str) -> ArgumentResult<&Self>

Source§

fn require_length_be(&self, name: &str, length: usize) -> ArgumentResult<&Self>

Source§

fn require_length_at_least( &self, name: &str, min_length: usize, ) -> ArgumentResult<&Self>

Source§

fn require_length_at_most( &self, name: &str, max_length: usize, ) -> ArgumentResult<&Self>

Source§

fn require_length_in_range( &self, name: &str, min_length: usize, max_length: usize, ) -> ArgumentResult<&Self>

Source§

impl<T> CollectionArgument for Vec<T>

Source§

fn require_non_empty(&self, name: &str) -> ArgumentResult<&Self>

Source§

fn require_length_be(&self, name: &str, length: usize) -> ArgumentResult<&Self>

Source§

fn require_length_at_least( &self, name: &str, min_length: usize, ) -> ArgumentResult<&Self>

Source§

fn require_length_at_most( &self, name: &str, max_length: usize, ) -> ArgumentResult<&Self>

Source§

fn require_length_in_range( &self, name: &str, min_length: usize, max_length: usize, ) -> ArgumentResult<&Self>

Implementors§