* Make `YamlLoader` generic on the type of the `Node`. This is required because deeper node need to have annotations too. * Add a `LoadableYamlNode` trait, required for YAML node types to be loaded by `YamlLoader`. It contains methods required by `YamlLoader` during loading. * Implement `LoadableYamlNode` for `Yaml`. * Take `load_from_str` out of `YamlLoader` for parsing non-annotated nodes. This avoids every user to specify the generics in `YamlLoader::<Yaml>::load_from_str`.
4 KiB
Changelog
Upcoming
Breaking Changes:
- Move
load_from_*
methods out of theYamlLoader
. Now,YamlLoader
gained a generic parameter. Moving those functions out of it spares having to manually specify the generic inYamlLoader::<Yaml>::load_from_str
. Manipulating theYamlLoader
directly was not common.
Features:
-
(#19)
Yaml
now implementsIndexMut<usize>
andIndexMut<&'a str>
. These functions may not return a mutable reference to aBAD_VALUE
. Instead,index_mut()
will panic if either:- The index is out of range, as per
IndexMut
's requirements - The inner
Yaml
variant doesn't matchYaml::Array
forusize
orYaml::Hash
for&'a str
- The index is out of range, as per
-
Use cargo features
This allows for more fine-grained control over MSRV and to completely remove debug code from the library when it is consumed.
The
encoding
feature, governing theYamlDecoder
, has been enabled by default. Users of@davvid
's fork ofyaml-rust
or ofyaml-rust2
might already use this. Users of the originalyaml-rust
crate may freely disable this feature (cargo <...> --no-default-features
) and lower MSRV to 1.65.0.
v0.8.0
Breaking Changes:
- The
encoding
library has been replaced withencoding_rs
. If you use thetrap
ofYamlDecoder
, this change will make your code not compile. An additional enumYamlDecoderTrap
has been added to abstract the underlying library and avoid breaking changes in the future. This additionally lifts theencoding
dependency on your project if you were using that feature.- The signature of the function for
YamlDecoderTrap::Call
has changed: - The
encoding::types::DecoderTrap
has been replaced withYamlDecoderTrap
.
Please refer to the// Before, with `encoding::types::DecoderTrap::Call` fn(_: &mut encoding::RawDecoder, _: &[u8], _: &mut encoding::StringWriter) -> bool; // Now, with `YamlDecoderTrap::Call` fn(_: u8, _: u8, _: &[u8], _: &mut String) -> ControlFlow<Cow<'static str>>;
YamlDecoderTrapFn
documentation for more details.
- The signature of the function for
Features:
-
Tags can now be retained across documents by calling
keep_tags(true)
on aParser
before loading documents. (#10 (#12) -
YamlLoader
structs now have adocuments()
method that returns the parsed documents associated with a loader. -
Parser::new_from_str(&str)
andYamlLoader::load_from_parser(&Parser)
were added.
Development:
- Linguist attributes were added for the
tests/*.rs.inc
files to prevent github from classifying them as C++ files.
v0.7.0
Features:
-
Multi-line strings are now emitted using block scalars.
-
Error messages now contain a byte offset to aid debugging. (#176)
-
Yaml now has
or
andborrowed_or
methods. (#179) -
Yaml::load_from_bytes()
is now available. (#156) -
The parser and scanner now return Err() instead of calling panic.
Development:
-
The documentation was updated to include a security note mentioning that yaml-rust is safe because it does not interpret types. (#195)
-
Updated to quickcheck 1.0. (#188)
-
hashlink
is now used instead oflinked_hash_map
.
v0.6.0
Development:
-
is_xxx
functions were moved into the privatechar_traits
module. -
Benchmarking tools were added.
-
Performance was improved.