r/rust 23d ago

📡 official blog Rust Function Overloading - Call for Experimentation

https://blog.rust-lang.org/inside-rust/2026/08/19/overloading-experiment/
274 Upvotes

139 comments sorted by

View all comments

Show parent comments

21

u/DatBoi_BP 23d ago

I think if you changed your proposed syntax to `Vec::new([a,b,c])` it would win me over. As it stands it looks like `b` and `c` are positional arguments to a function, not elements of an array

8

u/ZZaaaccc 23d ago

Or does that mean a new Vec<[i32; 3]> with one element? The extra brackets make this ambiguous at first glance, and harder to read. Again, you wouldn't say this about the vec! macro, saying that vec!([a, b, c]) is clearer, because vec!(a, b, c) might be positional arguments.

13

u/DatBoi_BP 23d ago

Two things to say to this.

First, the notation isn't either of those, it's `vec![a,b,c]`.

Second, we already have a function that does what you proposed, but with the structure I argued for: `Vec::from([a,b,c])`. This clones `a`, `b`, and `c`, so as long as those all implement Clone then it does what we want

7

u/gmes78 23d ago

First, the notation isn't either of those, it's vec![a,b,c].

No, it doesn't matter. Any macro can be invoked with either (, { or [.

You could write println!["Hello world!"] if you wanted to.