Skip to content

Support creating default Vec within a custom allocator#154990

Open
Nokel81 wants to merge 1 commit intorust-lang:mainfrom
Nokel81:vec-default-with-custom-allocator
Open

Support creating default Vec within a custom allocator#154990
Nokel81 wants to merge 1 commit intorust-lang:mainfrom
Nokel81:vec-default-with-custom-allocator

Conversation

@Nokel81
Copy link
Copy Markdown
Contributor

@Nokel81 Nokel81 commented Apr 8, 2026

This PR adds support for calling Default::default for some Vec<T, A> as long as the A also implements Default.

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Apr 8, 2026
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented Apr 8, 2026

r? @Mark-Simulacrum

rustbot has assigned @Mark-Simulacrum.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: libs
  • libs expanded to 7 candidates
  • Random selection from Mark-Simulacrum, jhpratt

@Nokel81
Copy link
Copy Markdown
Contributor Author

Nokel81 commented Apr 8, 2026

@rustbot modify label: +I-libs-api-nominated

@rustbot rustbot added the I-libs-api-nominated Nominated for discussion during a libs-api team meeting. label Apr 8, 2026
@rust-log-analyzer
Copy link
Copy Markdown
Collaborator

The job pr-check-1 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
[RUSTC-TIMING] quick_error test:false 0.070
    Checking fnv v1.0.7
[RUSTC-TIMING] fnv test:false 0.062
    Checking rusty-fork v0.3.1
error[E0283]: type annotations needed for `Vec<NodeOrToken<SyntaxNode<RustLanguage>, SyntaxToken<...>>, _>`
   --> src/tools/rust-analyzer/crates/ide-db/src/syntax_helpers/tree_diff.rs:89:13
    |
 89 |         let mut look_ahead_scratch = Vec::default();
    |             ^^^^^^^^^^^^^^^^^^^^^^   --- type must be known at this point
    |
    = note: the type must implement `Allocator`
---
              std::sync::Arc<T, A>
note: required by a bound in `Vec`
   --> library/alloc/src/vec/mod.rs:438:78
    |
438 | pub struct Vec<T, #[unstable(feature = "allocator_api", issue = "32838")] A: Allocator = Global> {
    |                                                                              ^^^^^^^^^ required by this bound in `Vec`
    = note: the full name for the type has been written to '/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/i686-pc-windows-gnu/release/deps/ide_db-402cfb8f638e4fa4.long-type-7506825192990240553.txt'
    = note: consider using `--verbose` to print the full type name to the console
help: consider giving `look_ahead_scratch` an explicit type, where the type for type parameter `A` is specified
    |
 89 |         let mut look_ahead_scratch: Vec<_, A> = Vec::default();
    |                                   +++++++++++

[RUSTC-TIMING] build_script_build test:false 0.374
    Checking xshell v0.2.7
[RUSTC-TIMING] rusty_fork test:false 0.292

@bjorn3
Copy link
Copy Markdown
Member

bjorn3 commented Apr 8, 2026

This breaks type inference unfortunately.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

I-libs-api-nominated Nominated for discussion during a libs-api team meeting. S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants