Open
Description
Code
Minimized code
pub fn encode_num<Writer: ExampleWriter>(n: u32, mut writer: Writer) -> Result<(), Writer::Error> {
if n > 15 {
encode_num(n / 16, &mut writer)?;
}
Ok(())
}
pub trait ExampleWriter {
type Error;
}
impl<'a, T: ExampleWriter> ExampleWriter for &'a mut T {
type Error = T::Error;
}
struct EmptyWriter;
impl ExampleWriter for EmptyWriter {
type Error = ();
}
fn main() {
encode_num(69, &mut EmptyWriter).unwrap();
}
Meta
rustc --version --verbose
:
rustc 1.61.0-nightly (8d60bf427 2022-03-19)
binary: rustc
commit-hash: 8d60bf427a4b055f464122062e76b3ec34d4f8ba
commit-date: 2022-03-19
host: x86_64-unknown-linux-gnu
release: 1.61.0-nightly
LLVM version: 14.0.0
Error output
thread 'rustc' panicked at 'index out of bounds: the len is 0 but the index is 0', /cargo/registry/src/github.com-1ecc6299db9ec823/ena-0.14.0/src/snapshot_vec.rs:199:10
<backtrace>
query stack during panic:
#0 [codegen_fulfill_obligation] checking if `core::ops::try_trait::Try` fulfills its obligations
#1 [resolve_instance] resolving instance `<core::result::Result<(), _> as core::ops::try_trait::Try>::branch`
#2 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
Backtrace
stack backtrace:
0: rust_begin_unwind
at /rustc/8d60bf427a4b055f464122062e76b3ec34d4f8ba/library/std/src/panicking.rs:584:5
1: core::panicking::panic_fmt
at /rustc/8d60bf427a4b055f464122062e76b3ec34d4f8ba/library/core/src/panicking.rs:143:14
2: core::panicking::panic_bounds_check
at /rustc/8d60bf427a4b055f464122062e76b3ec34d4f8ba/library/core/src/panicking.rs:84:5
3: <rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_infer::infer::freshen::TypeFreshener>
4: <rustc_infer::infer::freshen::TypeFreshener as rustc_middle::ty::fold::TypeFolder>::fold_ty
5: <rustc_trait_selection::traits::select::SelectionContext>::select
6: <rustc_infer::infer::InferCtxtBuilder>::enter::<core::result::Result<&rustc_middle::traits::ImplSource<()>, rustc_errors::ErrorGuaranteed>, rustc_trait_selection::traits::codegen::codegen_fulfill_obligation::{closure#0}>
7: rustc_trait_selection::traits::codegen::codegen_fulfill_obligation
8: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, (rustc_middle::ty::ParamEnv, rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::TraitRef>), core::result::Result<&rustc_middle::traits::ImplSource<()>, rustc_errors::ErrorGuaranteed>>
9: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<(rustc_middle::ty::ParamEnv, rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::TraitRef>), core::result::Result<&rustc_middle::traits::ImplSource<()>, rustc_errors::ErrorGuaranteed>>>
10: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::codegen_fulfill_obligation
11: rustc_ty_utils::instance::inner_resolve_instance
12: rustc_ty_utils::instance::resolve_instance
13: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, rustc_middle::ty::ParamEnvAnd<(rustc_span::def_id::DefId, &rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg>)>, core::result::Result<core::option::Option<rustc_middle::ty::instance::Instance>, rustc_errors::ErrorGuaranteed>>
14: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::resolve_instance, rustc_query_impl::plumbing::QueryCtxt>
15: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::resolve_instance
16: <rustc_middle::ty::instance::Instance>::resolve
17: rustc_monomorphize::collector::collect_neighbours
18: rustc_monomorphize::collector::collect_items_rec
19: rustc_monomorphize::collector::collect_items_rec
20: rustc_monomorphize::collector::collect_items_rec
21: rustc_monomorphize::collector::collect_items_rec
22: rustc_monomorphize::collector::collect_items_rec
23: rustc_monomorphize::collector::collect_items_rec
24: rustc_monomorphize::collector::collect_items_rec
25: rustc_monomorphize::collector::collect_items_rec
26: rustc_monomorphize::collector::collect_items_rec
27: rustc_monomorphize::collector::collect_items_rec
28: rustc_monomorphize::collector::collect_items_rec
29: rustc_monomorphize::collector::collect_items_rec
30: rustc_monomorphize::collector::collect_items_rec
31: rustc_monomorphize::collector::collect_items_rec
32: rustc_monomorphize::collector::collect_items_rec
33: rustc_monomorphize::collector::collect_items_rec
34: rustc_monomorphize::collector::collect_items_rec
35: rustc_monomorphize::collector::collect_items_rec
36: rustc_monomorphize::collector::collect_items_rec
37: rustc_monomorphize::collector::collect_items_rec
38: rustc_monomorphize::collector::collect_items_rec
39: rustc_monomorphize::collector::collect_items_rec
40: rustc_monomorphize::collector::collect_items_rec
41: rustc_monomorphize::collector::collect_items_rec
42: rustc_monomorphize::collector::collect_items_rec
43: rustc_monomorphize::collector::collect_items_rec
44: rustc_monomorphize::collector::collect_items_rec
45: rustc_monomorphize::collector::collect_items_rec
46: rustc_monomorphize::collector::collect_items_rec
47: rustc_monomorphize::collector::collect_items_rec
48: rustc_monomorphize::collector::collect_items_rec
49: rustc_monomorphize::collector::collect_items_rec
50: rustc_monomorphize::collector::collect_items_rec
51: rustc_monomorphize::collector::collect_items_rec
52: rustc_monomorphize::collector::collect_items_rec
53: rustc_monomorphize::collector::collect_items_rec
54: rustc_monomorphize::collector::collect_items_rec
55: rustc_monomorphize::collector::collect_items_rec
56: rustc_monomorphize::collector::collect_items_rec
57: rustc_monomorphize::collector::collect_items_rec
58: rustc_monomorphize::collector::collect_items_rec
59: rustc_monomorphize::collector::collect_items_rec
60: rustc_monomorphize::collector::collect_items_rec
61: rustc_monomorphize::collector::collect_items_rec
62: rustc_monomorphize::collector::collect_items_rec
63: rustc_monomorphize::collector::collect_items_rec
64: rustc_monomorphize::collector::collect_items_rec
65: rustc_monomorphize::collector::collect_items_rec
66: rustc_monomorphize::collector::collect_items_rec
67: rustc_monomorphize::collector::collect_items_rec
68: rustc_monomorphize::collector::collect_items_rec
69: rustc_monomorphize::collector::collect_items_rec
70: rustc_monomorphize::collector::collect_items_rec
71: rustc_monomorphize::collector::collect_items_rec
72: rustc_monomorphize::collector::collect_items_rec
73: rustc_monomorphize::collector::collect_items_rec
74: rustc_monomorphize::collector::collect_items_rec
75: rustc_monomorphize::collector::collect_items_rec
76: rustc_monomorphize::collector::collect_items_rec
77: rustc_monomorphize::collector::collect_items_rec
78: rustc_monomorphize::collector::collect_items_rec
79: rustc_monomorphize::collector::collect_items_rec
80: rustc_monomorphize::collector::collect_items_rec
81: rustc_monomorphize::collector::collect_items_rec
82: rustc_monomorphize::collector::collect_items_rec
83: rustc_monomorphize::collector::collect_items_rec
84: rustc_monomorphize::collector::collect_items_rec
85: rustc_monomorphize::collector::collect_items_rec
86: rustc_monomorphize::collector::collect_items_rec
87: rustc_monomorphize::collector::collect_items_rec
88: rustc_monomorphize::collector::collect_items_rec
89: rustc_monomorphize::collector::collect_items_rec
90: rustc_monomorphize::collector::collect_items_rec
91: rustc_monomorphize::collector::collect_items_rec
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.