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§
Sourcefn require_non_empty(&self, name: &str) -> ArgumentResult<&Self>
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());Sourcefn require_length_be(&self, name: &str, length: usize) -> ArgumentResult<&Self>
fn require_length_be(&self, name: &str, length: usize) -> ArgumentResult<&Self>
Validate that the collection length equals the specified value
§Parameters
name- Parameter namelength- 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());Sourcefn require_length_at_least(
&self,
name: &str,
min_length: usize,
) -> ArgumentResult<&Self>
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 namemin_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());Sourcefn require_length_at_most(
&self,
name: &str,
max_length: usize,
) -> ArgumentResult<&Self>
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 namemax_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());Sourcefn require_length_in_range(
&self,
name: &str,
min_length: usize,
max_length: usize,
) -> ArgumentResult<&Self>
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 namemin_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.