Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is an early implementation of #25 in progress. It is currently very incomplete, just for previewing its API and approach.
Note to self: Remember to change the base branch to
main
ormain-dev
before merging.We mainly introduced a new trait:
then we implement it for built-in sinks and formatters like:
Of course, users can implement this trait for their own sinks and formatters.
With the power of
erased-serde
, we can cast thetype Params
to adyn erased_serde::Deserializer
to be used later. (Checkconfig/registry.rs
)When we deserializing a sink or formatter, we will first read the
name
field, then look it up from the registry, if found, deserializing the rest of the fields using the erased storedDeserializer
. (Checkconfig/parse.rs
)This whole deserialization process will be very hidden to users!
trait Configurable
and.register_xxx()
is the only thing they need to care about if they have their own sink / formatter.