Simplify Option::into_flat_iter signature#158741
Conversation
|
r? @Darksonn rustbot has assigned @Darksonn. Use Why was this reviewer chosen?The reviewer was selected based on:
|
|
I can't come up with a good reason either. cc @scottmcm since you originally raised the question. There is one minor, mechanical difference: with the old signature, you can turbofish the iterator type. But if type annotations are needed, then it's virtually always easier to name iterable types than to name iterator types (which are rarely imported and named, and sometimes can't be named at all). And it seems unlikely to have a situation where type inference got far enough to resolve the method call, but still needs hints about some aspects of the IntoIterator type. Github code search doesn't seem to know of any calls that use turbofish, either. |
|
This also looks reasonable to me. |
|
I'm just gonna go ahead and approve this. If there's some reason not to do this that everyone has missed so far, libs-api can still consider it as part of stabilization. But I don't feel that's very likely, so no need to preemptively involve any heavier process IMO. r? hanna-kruppe @bors r+ rollup |
…=hanna-kruppe
Simplify `Option::into_flat_iter` signature
```diff
impl<T: IntoIterator> Option<T> {
- pub fn into_flat_iter<A>(self) -> OptionFlatten<A>
- where
- T: IntoIterator<IntoIter = A>,
+ pub fn into_flat_iter(self) -> OptionFlatten<T::IntoIter> {
}
```
This is marked as an unresolved question (rust-lang#148441, rust-lang#148487 (comment)), but I cannot come up with any reason to have this generic.
…=hanna-kruppe
Simplify `Option::into_flat_iter` signature
```diff
impl<T: IntoIterator> Option<T> {
- pub fn into_flat_iter<A>(self) -> OptionFlatten<A>
- where
- T: IntoIterator<IntoIter = A>,
+ pub fn into_flat_iter(self) -> OptionFlatten<T::IntoIter> {
}
```
This is marked as an unresolved question (rust-lang#148441, rust-lang#148487 (comment)), but I cannot come up with any reason to have this generic.
…=hanna-kruppe
Simplify `Option::into_flat_iter` signature
```diff
impl<T: IntoIterator> Option<T> {
- pub fn into_flat_iter<A>(self) -> OptionFlatten<A>
- where
- T: IntoIterator<IntoIter = A>,
+ pub fn into_flat_iter(self) -> OptionFlatten<T::IntoIter> {
}
```
This is marked as an unresolved question (rust-lang#148441, rust-lang#148487 (comment)), but I cannot come up with any reason to have this generic.
…=hanna-kruppe
Simplify `Option::into_flat_iter` signature
```diff
impl<T: IntoIterator> Option<T> {
- pub fn into_flat_iter<A>(self) -> OptionFlatten<A>
- where
- T: IntoIterator<IntoIter = A>,
+ pub fn into_flat_iter(self) -> OptionFlatten<T::IntoIter> {
}
```
This is marked as an unresolved question (rust-lang#148441, rust-lang#148487 (comment)), but I cannot come up with any reason to have this generic.
…uwer Rollup of 25 pull requests Successful merges: - #158871 (add relnotes for 1.97.0) - #158968 (stdarch subtree update) - #154445 (rustdoc: Represent `--output-format=json` coverage and ir differently) - #156370 (Reject linked dylib EII default overrides) - #157153 (allow `Allocator`s to be used as `#[global_allocator]`s) - #158495 (Rename HAS_CT_PROJECTION to HAS_CONST_ALIAS) - #158617 (allow mGCA const arguments to fall back to anon consts) - #158645 (Fix splat ICEs and ban it in closures) - #158655 (Fix coroutine MIR saved local remapping) - #158666 (Carry the `b_offset` inside `BackendRepr::ScalarPair`) - #158912 (Introduce new bootstrap config section for PGO configuration) - #158920 (Update wasm-component-ld to 0.5.26) - #158926 (wrapping_sh* methods: clarify underspecified reference) - #158927 (add core test run with `-Zforce-intrinsic-fallback`) - #158932 (Do not build the compiler when invoking `x perf compare`) - #158937 (Emit the emscripten entry point as `__main_argc_argv`) - #151379 (Stabilize `VecDeque::retain_back` from `truncate_front`) - #156548 ( Library support for aarch64-unknown-linux-pauthtest target) - #158307 (CI job for parallel frontend ui tests) - #158347 (Improve generic parameters handling for #[diagnostic::on_const]) - #158722 (delegation: do not always inherit `ConstArgHasType` predicates) - #158741 (Simplify `Option::into_flat_iter` signature) - #158807 (Add regression test for CString::clone_into unwind safety) - #158862 (Fix the span for parameter suggestion ) - #158883 (tests: fix enum-match.rs to handle LLVM 23)
…=hanna-kruppe
Simplify `Option::into_flat_iter` signature
```diff
impl<T: IntoIterator> Option<T> {
- pub fn into_flat_iter<A>(self) -> OptionFlatten<A>
- where
- T: IntoIterator<IntoIter = A>,
+ pub fn into_flat_iter(self) -> OptionFlatten<T::IntoIter> {
}
```
This is marked as an unresolved question (rust-lang#148441, rust-lang#148487 (comment)), but I cannot come up with any reason to have this generic.
Rollup of 25 pull requests Successful merges: - #158871 (add relnotes for 1.97.0) - #158968 (stdarch subtree update) - #157690 (codegen_ssa: pack small const aggregates into immediate stores) - #158541 (Move `std::io::Write` to `core::io`) - #154445 (rustdoc: Represent `--output-format=json` coverage and ir differently) - #156370 (Reject linked dylib EII default overrides) - #157153 (allow `Allocator`s to be used as `#[global_allocator]`s) - #158495 (Rename HAS_CT_PROJECTION to HAS_CONST_ALIAS) - #158617 (allow mGCA const arguments to fall back to anon consts) - #158645 (Fix splat ICEs and ban it in closures) - #158655 (Fix coroutine MIR saved local remapping) - #158666 (Carry the `b_offset` inside `BackendRepr::ScalarPair`) - #158870 (std: merge the unix-like io::error modules into one file) - #158920 (Update wasm-component-ld to 0.5.26) - #158926 (wrapping_sh* methods: clarify underspecified reference) - #158927 (add core test run with `-Zforce-intrinsic-fallback`) - #158932 (Do not build the compiler when invoking `x perf compare`) - #158937 (Emit the emscripten entry point as `__main_argc_argv`) - #151379 (Stabilize `VecDeque::retain_back` from `truncate_front`) - #156144 (Better docs for PartialEq (includes macro rename)) - #156548 ( Library support for aarch64-unknown-linux-pauthtest target) - #158307 (CI job for parallel frontend ui tests) - #158347 (Improve generic parameters handling for #[diagnostic::on_const]) - #158722 (delegation: do not always inherit `ConstArgHasType` predicates) - #158741 (Simplify `Option::into_flat_iter` signature)
Agreed. There might be a reason this would be handy if it was allowing something like |
…=hanna-kruppe
Simplify `Option::into_flat_iter` signature
```diff
impl<T: IntoIterator> Option<T> {
- pub fn into_flat_iter<A>(self) -> OptionFlatten<A>
- where
- T: IntoIterator<IntoIter = A>,
+ pub fn into_flat_iter(self) -> OptionFlatten<T::IntoIter> {
}
```
This is marked as an unresolved question (rust-lang#148441, rust-lang#148487 (comment)), but I cannot come up with any reason to have this generic.
Rollup of 23 pull requests Successful merges: - #158968 (stdarch subtree update) - #154445 (rustdoc: Represent `--output-format=json` coverage and ir differently) - #158495 (Rename HAS_CT_PROJECTION to HAS_CONST_ALIAS) - #158666 (Carry the `b_offset` inside `BackendRepr::ScalarPair`) - #158870 (std: merge the unix-like io::error modules into one file) - #158920 (Update wasm-component-ld to 0.5.26) - #158926 (wrapping_sh* methods: clarify underspecified reference) - #158927 (add core test run with `-Zforce-intrinsic-fallback`) - #158932 (Do not build the compiler when invoking `x perf compare`) - #158937 (Emit the emscripten entry point as `__main_argc_argv`) - #151379 (Stabilize `VecDeque::retain_back` from `truncate_front`) - #156144 (Better docs for PartialEq (includes macro rename)) - #156548 ( Library support for aarch64-unknown-linux-pauthtest target) - #157995 (`Vec::dedup_by` docs explicit function argument order) - #158307 (CI job for parallel frontend ui tests) - #158741 (Simplify `Option::into_flat_iter` signature) - #158807 (Add regression test for CString::clone_into unwind safety) - #158862 (Fix the span for parameter suggestion ) - #158894 (Make the ordering of non-terminal binds in ambiguity error messages deterministic) - #158902 (add codegen test for range length bound propagation) - #158913 (Update `browser-ui-test` version to `0.24.1`) - #158935 (std: support real fd methods on Emscripten) - #158978 (Add regression test for too-big by-value ABI args)
Rollup merge of #158741 - WaffleLapkin:into_flat_iter_noa, r=hanna-kruppe Simplify `Option::into_flat_iter` signature ```diff impl<T: IntoIterator> Option<T> { - pub fn into_flat_iter<A>(self) -> OptionFlatten<A> - where - T: IntoIterator<IntoIter = A>, + pub fn into_flat_iter(self) -> OptionFlatten<T::IntoIter> { } ``` This is marked as an unresolved question (#148441, #148487 (comment)), but I cannot come up with any reason to have this generic.
Rollup of 23 pull requests Successful merges: - rust-lang/rust#158968 (stdarch subtree update) - rust-lang/rust#154445 (rustdoc: Represent `--output-format=json` coverage and ir differently) - rust-lang/rust#158495 (Rename HAS_CT_PROJECTION to HAS_CONST_ALIAS) - rust-lang/rust#158666 (Carry the `b_offset` inside `BackendRepr::ScalarPair`) - rust-lang/rust#158870 (std: merge the unix-like io::error modules into one file) - rust-lang/rust#158920 (Update wasm-component-ld to 0.5.26) - rust-lang/rust#158926 (wrapping_sh* methods: clarify underspecified reference) - rust-lang/rust#158927 (add core test run with `-Zforce-intrinsic-fallback`) - rust-lang/rust#158932 (Do not build the compiler when invoking `x perf compare`) - rust-lang/rust#158937 (Emit the emscripten entry point as `__main_argc_argv`) - rust-lang/rust#151379 (Stabilize `VecDeque::retain_back` from `truncate_front`) - rust-lang/rust#156144 (Better docs for PartialEq (includes macro rename)) - rust-lang/rust#156548 ( Library support for aarch64-unknown-linux-pauthtest target) - rust-lang/rust#157995 (`Vec::dedup_by` docs explicit function argument order) - rust-lang/rust#158307 (CI job for parallel frontend ui tests) - rust-lang/rust#158741 (Simplify `Option::into_flat_iter` signature) - rust-lang/rust#158807 (Add regression test for CString::clone_into unwind safety) - rust-lang/rust#158862 (Fix the span for parameter suggestion ) - rust-lang/rust#158894 (Make the ordering of non-terminal binds in ambiguity error messages deterministic) - rust-lang/rust#158902 (add codegen test for range length bound propagation) - rust-lang/rust#158913 (Update `browser-ui-test` version to `0.24.1`) - rust-lang/rust#158935 (std: support real fd methods on Emscripten) - rust-lang/rust#158978 (Add regression test for too-big by-value ABI args)
impl<T: IntoIterator> Option<T> { - pub fn into_flat_iter<A>(self) -> OptionFlatten<A> - where - T: IntoIterator<IntoIter = A>, + pub fn into_flat_iter(self) -> OptionFlatten<T::IntoIter> { }This is marked as an unresolved question (#148441, #148487 (comment)), but I cannot come up with any reason to have this generic.