Rust 1.8.0夜间编译器出现Rustboot错误

时间:2016-02-14 16:49:38

标签: rust

我正在尝试修复Rustboot,因此它将使用i686-unknown-linux-gnu在Rust 1.8.0中构建并运行。我有两个主要错误,我似乎无法修复,这些是:

main.rs:50:5: 54:6 error: the trait `core::iter::Iterator` is not implemented for the type `IntRange` [E0277]
main.rs:50     for i in range(0, 80 * 25) {
main.rs:51         unsafe {
main.rs:52             *((0xb8000 + i * 2) as *mut u16) = (background as u16) << 12;

main.rs:52:15: 52:44 error: the type of this value must be known in this context
main.rs:52             *((0xb8000 + i * 2) as *mut u16) = (background as u16) << 12;

关于为什么会发生这种情况的任何想法,以及我如何解决它?

链接到Rustboot main.rs文件:http://pastebin.com/wyDywYN8

1 个答案:

答案 0 :(得分:0)

IntRange未实现core::iter::Iterator,因此自然不能在for循环中使用。关于i类型的错误是相关的 - 因为IntRange没有实现Iterator,所以当它被用作一个时,其项目的类型是未知的。

您应该实施Iterator而不是提供next()作为固有方法:

use core::iter::Iterator;

impl Iterator for IntRange {
    type Item = i32;

    fn next(&mut self) -> Option<i32> {
        // your implementation
    }
}

这可能还不够,因为for循环也依赖Option,但我现在不记得它是lang项目还是完整路径查找