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.
Motivation
Described in #1389. To summarize,
RawJson
has a smaller memory footprint compared toDynamicObject
, only requiring 48 bytes of overhead (+ one JSON buffer allocation on heap) for each object for the smallest case.Solution
Introduce a new
raw_json
module:RawJson
is a newToObjectRef
implementation that can be used in reflectors similar to howDynamicObject
is used, with efficient access to the object ref fields required for reflector (i.e. namespace, name, resource version and uid)StrOffset
acts like aRange<usize>
, providing utilities to convert from/to a substring&str
in a JSON bufferExtra
trait provides the ability to cache additional data (offsets or other lightweight data) in aRawJson
Extra
is implemented by()
to indicate that no raw data is requested.