Closed
Description
trait Node {
fn zomg();
}
trait Graph<N: Node> {
fn nodes<'a, I: Iterator<&'a N>>(&'a self) -> I;
}
impl<N: Node> Graph<N> for Vec<N> {
fn nodes<'a, I: Iterator<&'a N>>(&self) -> I {
self.iter()
}
}
struct Stuff;
impl Node for Stuff {
fn zomg() {
println!("zomg");
}
}
fn iterate<N: Node, G: Graph<N>>(graph: &G) {
for node in graph.iter() {
node.zomg();
}
}
pub fn main() {
let graph = Vec::new();
graph.push(Stuff);
iterate(graph);
}
backtrace:
RUST_BACKTRACE=1 rustc graph.rs
graph.rs:11:9: 11:20 error: mismatched types: expected `I` but found `std::slice::Items<,N>` (expected type parameter but found struct std::slice::Items)
graph.rs:11 self.iter()
^~~~~~~~~~~
error: internal compiler error: unexpected failure
note: the compiler hit an unexpected failure path. this is a bug.
note: we would appreciate a bug report: http://static.rust-lang.org/doc/master/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' failed at 'OwnedSlice: index out of bounds', /Users/carllerche/Code/oss/rust/src/libstd/option.rs:245
stack backtrace:
1: 0x1124fcbe4 - rt::backtrace::imp::write::hcadb4ca6cf458711WEa::v0.11.pre
2: 0x11245eafe - rt::unwind::begin_unwind_inner::hca8608d5eeddd58a2ea::v0.11.pre
3: 0x10f857888 - rt::unwind::begin_unwind::h17449128597888216233::v0.11.pre
4: 0x10fa04c9c - middle::subst::ty..Region.Subst::subst_spanned::he4ed0aac71e34c93RLQ::v0.11.pre
5: 0x10fa04f94 - middle::ty_fold::super_fold_sty::h16046759532750779955::v0.11.pre
6: 0x10fa044c3 - middle::subst::SubstFolder<'a>.TypeFolder::fold_ty::h0538984c9a39e119FwQ::v0.11.pre
7: 0x10f9d4460 - iter::Iterator::collect::h16000720370100676544::v0.11.pre
8: 0x10fa05820 - middle::ty_fold::super_fold_sig::h9594554811819343845::v0.11.pre
9: 0x10fa05029 - middle::ty_fold::super_fold_sty::h16046759532750779955::v0.11.pre
10: 0x10fa044c3 - middle::subst::SubstFolder<'a>.TypeFolder::fold_ty::h0538984c9a39e119FwQ::v0.11.pre
11: 0x10f9d4795 - middle::subst::ty..t.Subst::subst_spanned::h2928f17972b9f34fRuQ::v0.11.pre
12: 0x10fafd280 - middle::typeck::check::compare_impl_method::h7ba2a958f71be34dSK7::v0.11.pre
13: 0x10fae6595 - middle::typeck::check::check_item::h67823ebe09a4e536lp7::v0.11.pre
14: 0x10faedb8d - middle::typeck::check::check_item_types::hd2c43c2abe8a4484gS6::v0.11.pre
15: 0x10fc1d97f - util::common::time::h16635378632434799699::v0.11.pre
16: 0x10fc1c8ad - middle::typeck::check_crate::he941c106adef2e35Wgu::v0.11.pre
17: 0x11003840d - driver::driver::phase_3_run_analysis_passes::h297d37f689608467g1e::v0.11.pre
18: 0x11003e5c2 - driver::driver::compile_input::h6b68b4cbb99b30fb3qf::v0.11.pre
19: 0x110064312 - run_compiler::h6001e0654ecea84bzUm::v0.11.pre
20: 0x11007818d - main_args::closure.91224
21: 0x110076522 - monitor::closure.91099
22: 0x11007206b - task::TaskBuilder::try::closure.90865
23: 0x10f8216ec - task::spawn_opts::closure.7106
24: 0x1124f7ce8 - rt::task::Task::run::closure.40146
25: 0x112501a5c - rust_try
26: 0x1124f7b67 - rt::task::Task::run::h7f884ecfbc0c0d44C57::v0.11.pre
27: 0x10f82156f - task::spawn_opts::closure.7078
28: 0x1124fb5b6 - rt::thread::thread_start::h46e5de4fe5c37df8PK8::v0.11.pre
29: 0x7fff8e14e772 - _pthread_start