我正在用Rust编写一个玩游戏的AI。策略模块包括一个带有处理特定情况的标准化模块的文件夹。我希望能够在我想处理的新情况下随时创建一个新模块。
我可以在Node中完成此操作。例如,在MVC设置中,您可能有
├── src
├── controllers
├── index.js
└── ...
├── models
├── index.js
└── ...
└── views
├── index.js
└── ...
包含一个controllers / index.js文件
////////////////////////////////////////////////////////////////////////////////
// Imports
////////////////////////////////////////////////////////////////////////////////
// Models
const models = require('../models');
// Modules
const fs = require('fs');
const path = require('path');
////////////////////////////////////////////////////////////////////////////////
// Module
////////////////////////////////////////////////////////////////////////////////
const controllers = {};
const basename = path.basename(__filename);
fs.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) &&
(file !== basename) &&
(file.slice(-3) === '.js');
})
.forEach(file => {
controllers[file.slice(0,-3)] = require(`./${file}`)(models) ;
});
我可以在Rust中完成类似的事情吗?
答案 0 :(得分:2)
否,无法在运行时导入模块。 Rust是一种静态编译语言。
您最能做的是编写a build script来枚举您的文件系统并生成适当的mod
和/或use
语句。
require(`./${file}`)(models)
Rust也没有导入的“默认导出”,因此该模式不存在。您必须从模块中调用一个专门命名的函数。
另请参阅: