= Direct Conversion For large inputs parsing into the library's containers followed by conversion via <<ref_value_to>> (or vice versa <<ref_value_from>> followed by serialization from a <<ref_value>>) might be prohibitively expensive. For these cases the library provides components that allow parsing directly into and serializing directly from user-provided objects.
The drawback of this approach is that fully custom type representations are not supported, only the library-provided conversions are. Also all objects that should be populated by parsing have to be default constructible types. This includes not only the top-level object, but e.g. elements of containers, members of described `struct`s, and alternatives of variants.
That being said, if your types are default-constructible and you don't need the customisability allowed by <<ref_value_to>> and <<ref_value_from>>, then you can get a significant performance boost with direct conversions.
Direct parsing is performed by the <<ref_parse_into>> family of functions. The library provides overloads that take either <<ref_string_view>> or `std::istream`, and can report errors either via throwing exceptions or setting an error code.
If you need to combine incremental parsing with direct parsing, you can resort to <<ref_parser_for>>. `parser_for<T>` is an instantiation of <<ref_basic_parser>> that parses into an object of type `T`, and is what <<ref_parse_into>> uses under the hood.