refactor(rust): use StableModuleId as the map key if possible#7718
Merged
graphite-app[bot] merged 1 commit intomainfrom Dec 31, 2025
Merged
Conversation
This was referenced Dec 30, 2025
This was referenced Dec 30, 2025
Member
Author
shulaoda
approved these changes
Dec 30, 2025
294029e to
be86ee5
Compare
229981c to
d200918
Compare
b29bcdd to
37aa020
Compare
d200918 to
2fd6ed7
Compare
37aa020 to
2ad6b7b
Compare
2fd6ed7 to
95e363d
Compare
95e363d to
49e4638
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
This PR refactors the codebase to use StableModuleId as HashMap keys instead of String, improving type safety and performance. The change leverages the Borrow<str> trait to enable efficient lookups using &str references while storing the more semantically appropriate StableModuleId type.
Key Changes:
- Removed redundant
PartialEqimplementations fromStableModuleId(now usingBorrow<str>for comparisons) - Changed
module_idx_by_stable_idfromFxHashMap<String, ModuleIdx>toFxHashMap<StableModuleId, ModuleIdx> - Replaced
.to_string()with.clone()when inserting stable IDs (more efficient withArcStr-backed values)
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| crates/rolldown_common/src/types/stable_module_id.rs | Removed PartialEq<str> and PartialEq<&str> trait implementations; added comment explaining Borrow<str> usage |
| crates/rolldown/src/types/scan_stage_cache.rs | Updated HashMap type and insertion calls to use StableModuleId keys with .clone() |
| crates/rolldown/src/hmr/hmr_stage.rs | Updated HashMap lookup to use .as_str() method, leveraging Borrow<str> trait |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
49e4638 to
8ef466a
Compare
2ad6b7b to
8359676
Compare
Base automatically changed from
12-31-refactor_rust_return_stablemoduleid_instead_of_str_from_module_stable_id_
to
main
December 31, 2025 04:05
Contributor
Merge activity
|
8ef466a to
e5e2ce7
Compare
✅ Deploy Preview for rolldown-rs canceled.
|
shulaoda
added a commit
that referenced
this pull request
Dec 31, 2025
## [1.0.0-beta.58] - 2025-12-31 ### 💥 BREAKING CHANGES - experimental/devtools: rename InputOptions#debug to InputOptions#devtools (#7686) by @Copilot ### 🚀 Features - implement target feature check in `should_transform_js` for raw options (#7697) by @shulaoda - support `output.dynamicImportInCjs` option (#7677) by @shulaoda - types: expose `ChecksOptions` type (#7653) by @sapphi-red ### 🐛 Bug Fixes - export runtime helpers for cross-chunk access (#7658) by @shulaoda - cjs namespace merging regression (#7665) by @IWANABETHATGUY - replace panic with proper error handling for hash placeholder generation (#7661) by @shulaoda - remove the blank line between shebang and postBanner (#7643) by @btea - rolldown_plugin_vite_reporter: apply padding before ANSI coloring for proper size column alignment (#7649) by @shulaoda ### 🚜 Refactor - rust: use `StableModuleId` as the map key if possible (#7718) by @hyf0 - rust: return `StableModuleId` instead of `&str` from `Module#stable_id()` (#7717) by @hyf0 - rust: return correct stable id of external module from `Module#stable_id()` (#7716) by @hyf0 - rust: introduce `StableModuleId` type (#7715) by @hyf0 - rust: reduce unnecessary `id.as_arc_str().clone().into()` (#7714) by @hyf0 - rust: remove `ModuleId#resource_id` and use `as_arc_str` directly (#7710) by @hyf0 - rust: remove unused `Module#id_clone` (#7709) by @hyf0 - rust: remove `Module#id_as_str` and use `Module#id` directly (#7708) by @hyf0 - consolidate namespace call analysis into import analyzer (#7657) by @IWANABETHATGUY - rust: make `ExternalModule#id` have the type `ModuleId` (#7707) by @hyf0 - rust: rename `Module#id` to `Module#id_as_str` (#7706) by @hyf0 - rust: use `ModuleId` instead of raw `ArcStr` for `ScanStageCache` (#7701) by @hyf0 - simplify error propagation in cache merge (#7702) by @shulaoda - use `ModuleId` as the type of `ResolvedId#id` (#7694) by @hyf0 - types: rename `resolved_request_info.rs` to `resolved_id.rs` and move its contents (#7687) by @hyf0 - devtools: emit data to `<CWD>/node_modules/.rolldown` (#7692) by @hyf0 - use `InvalidOption` for hash placeholder generation errors (#7674) by @shulaoda - rolldown_error: remove dependency on rolldown_utils (#7672) by @shulaoda - use nodejs-built-in-modules v1.0.0 directly in callsites (#7667) by @Boshen ### 📚 Documentation - migrate input options content from options to auto gen docs (#7663) by @mdong1909 - create reference index page (#7659) by @mdong1909 - tweak auto-generated reference output (#7654) by @sapphi-red - initialize auto-gen docs (#7252) by @mdong1909 ### ⚙️ Miscellaneous Tasks - deps: update napi (#7705) by @renovate[bot] - pin Node.js version to 24.12.0 LTS in .node-version file (#7713) by @Copilot - update esbuild test reasons (#7703) by @sapphi-red - deps: update crate-ci/typos action to v1.40.1 (#7696) by @renovate[bot] - deps: update oxc to v0.106.0 (#7512) by @renovate[bot] - js: replace dprint with oxfmt (#7214) by @Boshen - deps: update dependency oxlint to v1.36.0 (#7691) by @renovate[bot] - deps: update github-actions (#7679) by @renovate[bot] - deps: update npm packages (#7680) by @renovate[bot] - deps: update rust crates (#7678) by @renovate[bot] - deps: update oxc resolver to v11.16.2 (#7668) by @renovate[bot] - add API reference files to knip entry points (#7669) by @Copilot - deps: update notify (#7651) by @sapphi-red - add `homepage` field to package.json (#7648) by @trivikr - deps: update oxc resolver to v11.16.1 (#7647) by @renovate[bot] - deps: update rolldown-plugin-dts to 0.20.0 (#7645) by @shulaoda Co-authored-by: shulaoda <[email protected]>
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.

No description provided.