gpt4 book ai didi

模块导入失败

转载 作者:行者123 更新时间:2023-11-29 08:30:28 26 4
gpt4 key购买 nike

我有简单的代码导入 2 个模块并使用它们的结构。
main.rs 中,我使用了 bots/maintrait.rsgamecore\board.rs 中的函数,它们都是以相同的方式导入的,但是maintrait.rs 中的函数无法解析。
这是我的 src 目录的结构:

.
├── bots
│   ├── maintrait.rs
│   └── mod.rs
├── gamecore
│   ├── board.rs
│   └── mod.rs
└── main.rs

和代码:

main.rs

use gamecore::{GameBoard,State};
use bots::{Bot,DummyBot};

mod bots;
mod gamecore;

fn main() {
let board = GameBoard::new();
let bot = DummyBot::new(State::O);
board.make_turn(State::X, (0, 0));
board.make_turn(State::O, bot.get_move(&board));
}

gamecore\mod.rs

pub use self::board::{GameBoard,State};
mod board;

gamecore\board.rs

pub struct GameBoard {
field: [[State, ..3], ..3]
}

impl GameBoard {
pub fn new() -> GameBoard {
GameBoard {
field: [[State::Empty, ..3], ..3]
}
}
...
}

bots\mod.rs

pub use self::maintrait::{Bot,DummyBot};
mod maintrait;

bots\maintrait.rs

use gamecore::{GameBoard,State};
use std::rand;

pub trait Bot {
fn new<'a>() -> Box<Bot + 'a>;
fn get_move(&mut self, board: &GameBoard) -> (uint, uint);
}

pub struct DummyBot {
side: State
}

impl Bot for DummyBot {
fn new<'a>(side: State) -> Box<Bot + 'a> {
box DummyBot{
side: side
}
}

fn get_move(&mut self, board: &GameBoard) -> (uint, uint) {
let turn = rand::random::<uint>() % 9;
(turn / 3, turn % 3)
}
}

错误信息

10:28 error: failed to resolve. Use of undeclared module `DummyBot`
let bot = DummyBot::new(State::O);
^~~~~~~~~~~~~
10:28 error: unresolved name `DummyBot::new`
let bot = DummyBot::new(State::O);
^~~~~~~~~~~~~

我哪里错了?为什么 2 个相同的导入工作不同?

最佳答案

Rust by Example有一个很好的例子说明如何做类似的事情。

以下是需要更改的相应代码:

pub trait Bot {
// Your trait and implementation signatures differ, so I picked this one
fn new() -> Self;
}

impl Bot for DummyBot {
fn new() -> DummyBot {
DummyBot{
side: State::Empty
}
}
}

let bot: DummyBot = Bot::new();

我猜了一点,但我认为潜在的原因是你没有真正定义一个 DummyBot::new,而是定义了一个通用的 Bot::new DummyBot 恰好实现了。您必须调用已定义的方法 (Bot::new)提供足够的信息来消除调用的歧义(let 的类型)。

关于模块导入失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27460453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com