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.
The
Cursor
API has historically relied on functionsfoo_valid
andfoo
, so that one could independently validate a thing and without validation access it. In practice this results in two expensive calls, rather than oneget_foo
call that returns an option. Mostly, we see this when there are more complex containers that need to track down the destination of a reference, as opposed to a simple slice access.The PR encourages more use of
get_foo
by removing their default implementations, addsBatchContainer::get
, and .. somewhat unrelatedly updates theCursorList
internals, following and extended #595.Potentially we should add in default implementations of
foo
andfoo_valid
, but no need to do so at the moment, and seemingly all of our cursor implementations would like the manual implementation of these as well (there are moments where it helps to call them directly, and so it's hard to deprecate them completely).