Const loader without generics. #77
Merged
+439
−602
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 PR tackles the two last issues of the
Loader
trait:The type parameter is annoying because it basically bounds the loader to a specific
Vocabulary
implementation, but there are many cases where we want to define a loader without committing to a specific vocabulary. The result is often lots of trait bounds everywhere that could be avoided.The fact that
load
takes a&mut self
is completely unnecessary. None of the provided loader implementations are mutating anything whenload
is called. The only case where it could be useful is for a loader implementing a cache, but even then we can argue that a cache should not change the functional nature ofload
and should be implemented with interior mutability.The fact that the loader must be passed with a mutable reference is annoying in many places where we could benefit from providing an immutable
Copy
reference.