Changes:
- Tweaked sanitization of invalid UTF-8 in options.
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:
- Add
ValueExt::string()
as the preferred method for converting fromOsString
intoString
. UnlikeOsString::into_string()
it has a normal error type so it's compatible with catch-all error types likeanyhow::Error
.into_string()?
will stay supported for the time being.
- Add
RawArgs::as_slice()
for unlimited lookahead. - Add
Parser::try_raw_args()
to get raw arguments without consuming any arguments in case of failure. Parser
now implementsClone
,Send
, andSync
. ItsDebug
output now shows the remaining arguments.
Changes:
- The input iterator is now consumed when you create a
Parser
, instead of during parsing. This breaks certain clever code that inspects the state of the iterator, butRawArgs::as_slice()
may provide an alternative. (If you don't know what this means then you aren't affected.) - Calling
Parser::values()
no longer consumes any arguments if you don't use the iterator. RawArgs::peek()
now takes&self
instead of&mut self
.
New:
- Add
Parser::raw_args()
for collecting raw unparsed arguments. (#12) - Implement
Debug
forValuesIter
.
Bug fixes:
- Change "missing argument at end of command" error message. (#11)
While this release is not strictly backward-compatible it should break very few programs.
New:
- Add
Parser::values()
for options with multiple arguments. - Add
Parser::optional_value()
for options with optional arguments. - Add
Parser::from_iter()
to construct from an iterator that includes the binary name. (#5) - Document how to use
Parser::value()
to collect all remaining arguments.
Changes:
- Support
=
as a separator for short options (as in-o=value
). (#18) - Sanitize the binary name if it's invalid unicode instead of ignoring it.
- Make
Error::UnexpectedValue.option
aString
instead of anOption<String>
.
Bug fixes:
- Include
bin_name
inParser
'sDebug
output.
Initial release.