Skip to main content

from_slice

Function from_slice 

Source
pub fn from_slice<T: Facet<'static>>(args: &[&str]) -> DriverOutcome<T>
Expand description

Parse command-line arguments from a slice.

This is a convenience function for CLI-only parsing (no env vars, no config files). For layered configuration, use builder instead.

This function is particularly useful for testing, as you can provide arguments directly without modifying std::env::args().

§Example

use facet::Facet;
use figue::{self as args, FigueBuiltins};

#[derive(Facet, Debug)]
struct Args {
    /// Enable verbose mode
    #[facet(args::named, args::short = 'v', default)]
    verbose: bool,

    /// Input file
    #[facet(args::positional)]
    input: String,

    #[facet(flatten)]
    builtins: FigueBuiltins,
}

// Parse with long flag
let args: Args = figue::from_slice(&["--verbose", "file.txt"]).unwrap();
assert!(args.verbose);
assert_eq!(args.input, "file.txt");

// Parse with short flag
let args: Args = figue::from_slice(&["-v", "file.txt"]).unwrap();
assert!(args.verbose);

// Parse without optional flag
let args: Args = figue::from_slice(&["file.txt"]).unwrap();
assert!(!args.verbose);

§Errors

Returns an error (via DriverOutcome) if:

  • Required arguments are missing
  • Unknown flags are provided
  • Type conversion fails (e.g., “abc” for a number)
  • --help, --version, or --completions is requested (success exit)