This release adds a new preferred way to cast OsString
into String
(.string()?
) and makes raw argument processing more flexible.
Almost no programs should need changes to keep working, but .string()?
makes it easier to use lexopt with other error types like anyhow's and using it is therefore recommended.
New:
ValueExt::string()
as the preferred method for converting from OsString
into String
. Unlike OsString::into_string()
it has a normal error type so it's compatible with catch-all error types like anyhow::Error
.into_string()?
will stay supported for the time being.RawArgs::as_slice()
for unlimited lookahead.Parser::try_raw_args()
to get raw arguments without consuming any arguments in case of failure.Parser
now implements Clone
, Send
, and Sync
. Its Debug
output now shows the remaining arguments.Changes:
Parser
, instead of during parsing. This breaks certain clever code that inspects the state of the iterator, but RawArgs::as_slice()
may provide an alternative. (If you don‘t know what this means then you aren’t affected.)Parser::values()
no longer consumes any arguments if you don't use the iterator.RawArgs::peek()
now takes &self
instead of &mut self
.New:
Parser::raw_args()
for collecting raw unparsed arguments. (#12)Debug
for ValuesIter
.Bug fixes:
While this release is not strictly backward-compatible it should break very few programs.
New:
Parser::values()
for options with multiple arguments.Parser::optional_value()
for options with optional arguments.Parser::from_iter()
to construct from an iterator that includes the binary name. (#5)Parser::value()
to collect all remaining arguments.Changes:
=
as a separator for short options (as in -o=value
). (#18)Error::UnexpectedValue.option
a String
instead of an Option<String>
.Bug fixes:
bin_name
in Parser
's Debug
output.Initial release.