我试图创建一个可变引用来克隆捕获的变量。但编译说:
rustc: /home/rustbuild/src/rust-buildbot/slave/nightly-linux/build/src/llvm/lib/IR/Instructions.cpp:2522:
static llvm::CastInst* llvm::CastInst::CreatePointerCast(llvm::Value*, llvm::Type*, const llvm::Twine&, llvm::Instruction*):
Assertion `S->getType()->isPtrOrPtrVectorTy() && "Invalid cast"' failed.
我做错了什么?
fn foo(t: &mut int){
println!("{}", t);
}
fn main() {
let test = 10;
let h = move || {
let mut r = &mut test.clone();
foo(r);
};
h();
}
答案 0 :(得分:2)
这很可能是编译器中导致LLVM崩溃的错误(断言发生在LLVM代码中,而不是在Rust中 - 否则会有相应的消息并且有可能获得回溯)。我已经提交了一张票here,您可以订阅它以跟踪其进度。