-
Notifications
You must be signed in to change notification settings - Fork 91
Closed as not planned
Description
These are some observations I've made while reading through the documentation and the code. These are not things that necessarily need to be resolved, but I wanted to write them down as they are my impressions from reading through the codebase for the first time.
- There are a bunch of public macros and constants that seem like they belong in the private API (
likely!
,unlikely!
,static_cast_*!
,stry!
,SIMDINPUT_LENGTH
,SIMDJSON_PADDING
) -
OwnedValue
could just beBorrowedValue
with something like the ownable traits to remove the lifetime when necessary. And forto_owned_value
can just return aBorrowedValue<'static>
. - Experiment with replacing
beef::lean::Cow
withHipStr
, which inlines strings up to 23 bytes - Is there a variant of the APIs that accept a &str or String as input? Redoing the UTF-8 validation seems like a waste (but I haven't checked the performance impact)
- The various re-exports make the docs quite confusing, especially
pub use crate::value::*
which hides everything it re-exports behind a*
- It might be better to make the re-exported modules private, which makes the re-exported types and functions appear as if they are really in the root
- Prelude docs say
Prelude to include needed traits
for every trait and module - Prelude includes modules, which kinda defeats the purpose of the prelude (this is actually an issue in
value-trait
) - Is the project still tracking simdjson v0.2? Because they are currently at v3.10
- lib.rs is filled with massive functions that should probably be in their own module
If anything here is wrong or for a reason I don't know, please correct me!
Metadata
Metadata
Assignees
Labels
No labels