Closed
Description
auto-reduced (treereduce-rust):
extern crate serde;
mod issue_4298 {
use serde::{Deserialize, Deserializer, Serialize};
use std::borrow::Cow;
#[derive(Serialize, Deserialize)]
struct Foo<'a, D> {
#[serde(deserialize_with = "func")]
foo: Option<Option<Cow<'a, str>>>,
}
fn func<'a, D>(_: D) -> Result<Option<Option<Cow<'a, str>>>, D::Error>
where
D: Deserializer<'a>,
{
}
}
original code
original:
#![deny(clippy::option_option)]
#![allow(borrow)]
const C: Option<'a, str> = None;
//~^ ERROR: consider using `Option<T>` instead of `Option<Option<T>>` or a custom enum if
static S: Option<Option<i32>> = None;
//~^ ERROR: consider using `Option<T>` instead of `Option<Option<T>>` or a custom enum if
fn input(_: Option<use std::borrow::Cow;x: Option<Option<u8>>u8>>) {}
// The lint only generates one warning for this
fn output() -> Option<Option<u8>> {
//~^ ERROR: consider using `Option<T>` instead of `Option<Option<T>>` or a custom enum if
None
}
fn output_nested() -> Vec<Option<Option<u8>>> {
//~^ ERROR: consider using `Option<T>` instead of `Option<Option<T>>` or a custom enum if
vec![None]
}
// The lint only generates one warning for this
fn output_nested_nested() -> Option<Option<Option<Option<u8>>>> {
//~^ ERROR: consider using `Option<T>` instead of `Option<Option<T>>` or a custom enum if
None
}
struct Struct {
x: Option<Option<u8>>,
//~^ ERROR: consider using `Option<T>` instead of `Option<Option<T>>` or a custom enum
}
impl Struct {
fn struct_fn() -> Option<Option<u8>> {
//~^ ERROR: consider using `Option<T>` instead of `Option<Option<T>>` or a custom enum
None
}
}
trait Trait {
fn trait_fn() -> Option<Option<u8>>;
//~^ ERROR: consider using `Option<T>` instead of `Option<Option<T>>` or a custom enum
}
enum Enum {
Tuple(Option<Option<u8>>),
//~^ ERROR: consider using `Option<T>` instead of `Option<Option<T>>` or a custom enum
Struct { x: Option<Option<u8>> },
//~^ ERROR: consider using `Option<T>` instead of `Option<Option<T>>` or a custom enum
}
// The lint allows this
type OptionOption = Option<Cow<'a, str>>;
// The lint allows this
fn output_type_alias() -> OptionOption {
None
}
// The line allows this
impl Trait for Struct {
fn trait_fn() -> Option<Option<u8>> {
None
}
}
fn main() {
input(None);
output();
output_nested();
// The lint allows this
let local: Struct<Option<u8>> = None;
// The lint allows this
let expr = Some(Some(true));
}
extern crate serde;
mod issue_4298 {
use serde::{Deserialize, Deserializer, Serialize};
use std::borrow::Cow;
#[derive(Serialize, Deserialize)]
struct Foo<'a, D> {
#[serde(deserialize_with = "func")]
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
#[serde(borrow)]
foo: Option<Option<Cow<'a, str>>>,
//~^ ERROR: consider using `Option<T>` instead of `Option<Option<T>>` or a custom
}
#[allow(clippy::option_option)]
fn func<'a, D>(_: D) -> Result<Option<Option<Cow<'a, str>>>, D::Error>
where
D: Deserializer<'a>,
{
Ok(Some(Some(Cow::Borrowed("hi"))))
}
}
Version information
rustc 1.79.0-nightly (63f70b3d1 2024-04-16)
binary: rustc
commit-hash: 63f70b3d104e20289a1a0df82747066c3d85b9a1
commit-date: 2024-04-16
host: x86_64-unknown-linux-gnu
release: 1.79.0-nightly
LLVM version: 18.1.3
Command:
/home/matthias/.rustup/toolchains/master/bin/rustc
Program output
error[E0601]: `main` function not found in crate `mvce`
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:17:2
|
17 | }
| ^ consider adding a `main` function to `/tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs`
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:1:1
|
1 | extern crate serde;
| ^^^^^^^^^^^^^^^^^^^
|
= note: see issue #27812 <https://github.com/rust-lang/rust/issues/27812> for more information
= help: add `#![feature(rustc_private)]` to the crate attributes to enable
= note: this compiler was built on 2024-04-16; consider upgrading it if it is out of date
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:3:17
|
3 | use serde::{Deserialize, Deserializer, Serialize};
| ^^^^^^^^^^^
|
= note: see issue #27812 <https://github.com/rust-lang/rust/issues/27812> for more information
= help: add `#![feature(rustc_private)]` to the crate attributes to enable
= note: this compiler was built on 2024-04-16; consider upgrading it if it is out of date
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:3:30
|
3 | use serde::{Deserialize, Deserializer, Serialize};
| ^^^^^^^^^^^^
|
= note: see issue #27812 <https://github.com/rust-lang/rust/issues/27812> for more information
= help: add `#![feature(rustc_private)]` to the crate attributes to enable
= note: this compiler was built on 2024-04-16; consider upgrading it if it is out of date
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:3:44
|
3 | use serde::{Deserialize, Deserializer, Serialize};
| ^^^^^^^^^
|
= note: see issue #27812 <https://github.com/rust-lang/rust/issues/27812> for more information
= help: add `#![feature(rustc_private)]` to the crate attributes to enable
= note: this compiler was built on 2024-04-16; consider upgrading it if it is out of date
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:6:14
|
6 | #[derive(Serialize, Deserialize)]
| ^^^^^^^^^
|
= note: see issue #27812 <https://github.com/rust-lang/rust/issues/27812> for more information
= help: add `#![feature(rustc_private)]` to the crate attributes to enable
= note: this compiler was built on 2024-04-16; consider upgrading it if it is out of date
= note: this error originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:6:25
|
6 | #[derive(Serialize, Deserialize)]
| ^^^^^^^^^^^
|
= note: see issue #27812 <https://github.com/rust-lang/rust/issues/27812> for more information
= help: add `#![feature(rustc_private)]` to the crate attributes to enable
= note: this compiler was built on 2024-04-16; consider upgrading it if it is out of date
= note: this error originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:14:12
|
14 | D: Deserializer<'a>,
| ^^^^^^^^^^^^^^^^
|
= note: see issue #27812 <https://github.com/rust-lang/rust/issues/27812> for more information
= help: add `#![feature(rustc_private)]` to the crate attributes to enable
= note: this compiler was built on 2024-04-16; consider upgrading it if it is out of date
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:8:9
|
8 | #[serde(deserialize_with = "func")]
| ^
|
= note: see issue #27812 <https://github.com/rust-lang/rust/issues/27812> for more information
= help: add `#![feature(rustc_private)]` to the crate attributes to enable
= note: this compiler was built on 2024-04-16; consider upgrading it if it is out of date
error[E0658]: use of unstable library feature 'rustc_private': this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via `Cargo.toml` instead?
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:12:66
|
12 | fn func<'a, D>(_: D) -> Result<Option<Option<Cow<'a, str>>>, D::Error>
| ^^^^^^^^
|
= note: see issue #27812 <https://github.com/rust-lang/rust/issues/27812> for more information
= help: add `#![feature(rustc_private)]` to the crate attributes to enable
= note: this compiler was built on 2024-04-16; consider upgrading it if it is out of date
error[E0392]: type parameter `D` is never used
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:7:20
|
7 | struct Foo<'a, D> {
| ^ unused type parameter
|
= help: consider removing `D`, referring to it in a field, or using a marker such as `PhantomData`
= help: if you intended `D` to be a const parameter, use `const D: /* Type */` instead
error[E0282]: type annotations needed
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:6:25
|
6 | #[derive(Serialize, Deserialize)]
| ^^^^^^^^^^^ cannot infer type
|
= note: this error originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0282]: type annotations needed
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:7:12
|
7 | struct Foo<'a, D> {
| ^^^ cannot infer type for type parameter `D` declared on the struct `Foo`
error: internal compiler error: compiler/rustc_middle/src/ty/typeck_results.rs:559:9: node HirId(DefId(0:80 ~ mvce[dcdf]::issue_4298::_#1::{impl#0}::deserialize::{impl#2}::visit_map).102) (expr `Deserialize`) cannot be placed in TypeckResults with hir_owner DefId(0:93 ~ mvce[dcdf]::issue_4298::_#1::{impl#0}::deserialize::{impl#2}::visit_map::{impl#0}::deserialize)
thread 'rustc' panicked at compiler/rustc_middle/src/ty/typeck_results.rs:559:9:
Box<dyn Any>
stack backtrace:
0: 0x712bc9a96cd5 - std::backtrace_rs::backtrace::libunwind::trace::hdd748c7838285883
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
1: 0x712bc9a96cd5 - std::backtrace_rs::backtrace::trace_unsynchronized::ha1462979ee6a2e4a
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x712bc9a96cd5 - std::sys_common::backtrace::_print_fmt::h423f6c0147b1e726
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/std/src/sys_common/backtrace.rs:68:5
3: 0x712bc9a96cd5 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h8781c340849a7502
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/std/src/sys_common/backtrace.rs:44:22
4: 0x712bc9ae5f9b - core::fmt::rt::Argument::fmt::he5b1af0e8d850256
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/core/src/fmt/rt.rs:165:63
5: 0x712bc9ae5f9b - core::fmt::write::hcd3c5ccee382395a
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/core/src/fmt/mod.rs:1157:21
6: 0x712bc9a8b85f - std::io::Write::write_fmt::h7d1e4c46a9034f24
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/std/src/io/mod.rs:1832:15
7: 0x712bc9a96aae - std::sys_common::backtrace::_print::he7fe8e3f6f78aca7
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/std/src/sys_common/backtrace.rs:47:5
8: 0x712bc9a96aae - std::sys_common::backtrace::print::h3ca58da6c9bbfe9e
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/std/src/sys_common/backtrace.rs:34:9
9: 0x712bc9a99429 - std::panicking::default_hook::{{closure}}::h04ae4afc91fb7ed6
10: 0x712bc9a9916d - std::panicking::default_hook::hb7ac4e3868494960
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/std/src/panicking.rs:291:9
11: 0x712bc647b1cb - std[cc9b189ccd9d9748]::panicking::update_hook::<alloc[cf0b8628080ef300]::boxed::Box<rustc_driver_impl[e492dcc29030f304]::install_ice_hook::{closure#0}>>::{closure#0}
12: 0x712bc9a99b2c - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h1bda734d4b3a4644
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/alloc/src/boxed.rs:2032:9
13: 0x712bc9a99b2c - std::panicking::rust_panic_with_hook::hd0146bfa2503919c
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/std/src/panicking.rs:792:13
14: 0x712bc64aa9b4 - std[cc9b189ccd9d9748]::panicking::begin_panic::<rustc_errors[32767898de9b63f2]::ExplicitBug>::{closure#0}
15: 0x712bc64a7726 - std[cc9b189ccd9d9748]::sys_common::backtrace::__rust_end_short_backtrace::<std[cc9b189ccd9d9748]::panicking::begin_panic<rustc_errors[32767898de9b63f2]::ExplicitBug>::{closure#0}, !>
16: 0x712bc64a7406 - std[cc9b189ccd9d9748]::panicking::begin_panic::<rustc_errors[32767898de9b63f2]::ExplicitBug>
17: 0x712bc64b39e1 - <rustc_errors[32767898de9b63f2]::diagnostic::BugAbort as rustc_errors[32767898de9b63f2]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
18: 0x712bc69588cc - rustc_middle[11164a6ce117b708]::util::bug::opt_span_bug_fmt::<rustc_span[1f43cfd63a717c3a]::span_encoding::Span>::{closure#0}
19: 0x712bc693fe1a - rustc_middle[11164a6ce117b708]::ty::context::tls::with_opt::<rustc_middle[11164a6ce117b708]::util::bug::opt_span_bug_fmt<rustc_span[1f43cfd63a717c3a]::span_encoding::Span>::{closure#0}, !>::{closure#0}
20: 0x712bc693fcbb - rustc_middle[11164a6ce117b708]::ty::context::tls::with_context_opt::<rustc_middle[11164a6ce117b708]::ty::context::tls::with_opt<rustc_middle[11164a6ce117b708]::util::bug::opt_span_bug_fmt<rustc_span[1f43cfd63a717c3a]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
21: 0x712bc4558be0 - rustc_middle[11164a6ce117b708]::util::bug::bug_fmt
22: 0x712bc6956bfb - rustc_middle[11164a6ce117b708]::ty::typeck_results::invalid_hir_id_for_typeck_results
23: 0x712bc79a79c7 - <rustc_middle[11164a6ce117b708]::ty::typeck_results::TypeckResults>::expr_ty
24: 0x712bc7c4af2e - rustc_hir_typeck[abee987f1e1c8266]::typeck
25: 0x712bc7c47489 - rustc_query_impl[2063281436f076b]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[2063281436f076b]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[11164a6ce117b708]::query::erase::Erased<[u8; 8usize]>>
26: 0x712bc7c60eb1 - rustc_query_system[8bdce35ed35c4821]::query::plumbing::try_execute_query::<rustc_query_impl[2063281436f076b]::DynamicConfig<rustc_query_system[8bdce35ed35c4821]::query::caches::VecCache<rustc_span[1f43cfd63a717c3a]::def_id::LocalDefId, rustc_middle[11164a6ce117b708]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[2063281436f076b]::plumbing::QueryCtxt, false>
27: 0x712bc7c5f7ce - rustc_query_impl[2063281436f076b]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace
28: 0x712bc7c5f3ac - <rustc_middle[11164a6ce117b708]::hir::map::Map>::par_body_owners::<rustc_hir_analysis[bcf11c8b5f91f029]::check_crate::{closure#4}>::{closure#0}
29: 0x712bc7c5e095 - rustc_hir_analysis[bcf11c8b5f91f029]::check_crate
30: 0x712bc806a3fa - rustc_interface[757df98036431907]::passes::analysis
31: 0x712bc8069f55 - rustc_query_impl[2063281436f076b]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[2063281436f076b]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[11164a6ce117b708]::query::erase::Erased<[u8; 1usize]>>
32: 0x712bc8609965 - rustc_query_system[8bdce35ed35c4821]::query::plumbing::try_execute_query::<rustc_query_impl[2063281436f076b]::DynamicConfig<rustc_query_system[8bdce35ed35c4821]::query::caches::SingleCache<rustc_middle[11164a6ce117b708]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[2063281436f076b]::plumbing::QueryCtxt, false>
33: 0x712bc86096c9 - rustc_query_impl[2063281436f076b]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
34: 0x712bc8409794 - rustc_interface[757df98036431907]::interface::run_compiler::<core[8ca2cc90ba3a0179]::result::Result<(), rustc_span[1f43cfd63a717c3a]::ErrorGuaranteed>, rustc_driver_impl[e492dcc29030f304]::run_compiler::{closure#0}>::{closure#0}
35: 0x712bc85c391d - std[cc9b189ccd9d9748]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[757df98036431907]::util::run_in_thread_with_globals<rustc_interface[757df98036431907]::util::run_in_thread_pool_with_globals<rustc_interface[757df98036431907]::interface::run_compiler<core[8ca2cc90ba3a0179]::result::Result<(), rustc_span[1f43cfd63a717c3a]::ErrorGuaranteed>, rustc_driver_impl[e492dcc29030f304]::run_compiler::{closure#0}>::{closure#0}, core[8ca2cc90ba3a0179]::result::Result<(), rustc_span[1f43cfd63a717c3a]::ErrorGuaranteed>>::{closure#0}, core[8ca2cc90ba3a0179]::result::Result<(), rustc_span[1f43cfd63a717c3a]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[8ca2cc90ba3a0179]::result::Result<(), rustc_span[1f43cfd63a717c3a]::ErrorGuaranteed>>
36: 0x712bc85c372a - <<std[cc9b189ccd9d9748]::thread::Builder>::spawn_unchecked_<rustc_interface[757df98036431907]::util::run_in_thread_with_globals<rustc_interface[757df98036431907]::util::run_in_thread_pool_with_globals<rustc_interface[757df98036431907]::interface::run_compiler<core[8ca2cc90ba3a0179]::result::Result<(), rustc_span[1f43cfd63a717c3a]::ErrorGuaranteed>, rustc_driver_impl[e492dcc29030f304]::run_compiler::{closure#0}>::{closure#0}, core[8ca2cc90ba3a0179]::result::Result<(), rustc_span[1f43cfd63a717c3a]::ErrorGuaranteed>>::{closure#0}, core[8ca2cc90ba3a0179]::result::Result<(), rustc_span[1f43cfd63a717c3a]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[8ca2cc90ba3a0179]::result::Result<(), rustc_span[1f43cfd63a717c3a]::ErrorGuaranteed>>::{closure#2} as core[8ca2cc90ba3a0179]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
37: 0x712bc9aa3a1b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hf04c15b7e1b40818
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/alloc/src/boxed.rs:2018:9
38: 0x712bc9aa3a1b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h6efe135dbcc64c78
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/alloc/src/boxed.rs:2018:9
39: 0x712bc9aa3a1b - std::sys::pal::unix::thread::Thread::new::thread_start::h767b00cfb36de6f0
at /rustc/63f70b3d104e20289a1a0df82747066c3d85b9a1/library/std/src/sys/pal/unix/thread.rs:108:17
40: 0x712bc32a955a - <unknown>
41: 0x712bc3326a3c - <unknown>
42: 0x0 - <unknown>
note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
note: please make sure that you have updated to the latest nightly
note: rustc 1.79.0-nightly (63f70b3d1 2024-04-16) running on x86_64-unknown-linux-gnu
query stack during panic:
#0 [typeck] type-checking `issue_4298::_::<impl at /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:6:25: 6:36>::deserialize::<impl at /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:6:25: 6:36>::visit_map::<impl at /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:6:25: 6:36>::deserialize`
#1 [analysis] running analysis passes on this crate
end of query stack
error[E0308]: mismatched types
--> /tmp/icemaker_global_tempdir.H9kfgK6krgPN/rustc_testrunner_tmpdir_reporting.dGeIzKFYjQKE/mvce.rs:12:29
|
12 | fn func<'a, D>(_: D) -> Result<Option<Option<Cow<'a, str>>>, D::Error>
| ---- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Result<Option<Option<...>>, ...>`, found `()`
| |
| implicitly returns `()` as its body has no tail or `return` expression
|
= note: expected enum `Result<std::option::Option<std::option::Option<Cow<'a, str>>>, <D as Deserializer<'a>>::Error>`
found unit type `()`
error: aborting due to 15 previous errors
Some errors have detailed explanations: E0282, E0308, E0392, E0601, E0658.
For more information about an error, try `rustc --explain E0282`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment