Avoid using heap on storing names, description, and hint#115
Open
rhysd wants to merge 1 commit intorust-lang:masterfrom
Open
Avoid using heap on storing names, description, and hint#115rhysd wants to merge 1 commit intorust-lang:masterfrom
rhysd wants to merge 1 commit intorust-lang:masterfrom
Conversation
tgross35
requested changes
Feb 10, 2026
Contributor
tgross35
left a comment
There was a problem hiding this comment.
I don't know if this is worth it because it's pretty much a one-time cost, and this comes with some usability reduction. It's also alloc-free for empty strings. We could instead take impl Into<Cow<'static, str>> in the signatures (over an API break) to save the allocations without taking on a lifetime, but again that doesn't seem worth the complexity.
There are a few alloc-related improvements that I do think make sense:
- Store an
Option<char>rather thanStringfor the short name since we should be rejecting >1 char anyway. Options::usage_with_formatcould probably be deprecated and replaced with something that takes&dyn core::fmt::Write. It shouldn't need to allocate a fresh string for each row.- Basically all API on
Matchesthat needs to return a string returnsStringbut they could be&stror-> impl Iterator<Item = ...>. (that would be an API break)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Currently all options' short/long names, description, and hint are allocated on heap memory when building
OptGroupinstance. However, in almost all cases, they are given as&'static strso those allocations are not necessary.This PR avoids those allocations which are unnecessary in almost all cases by introducing new lifetime
'a.