我想将一个数组传递给一个函数并更改其中的内容.我怎么能这样做,这是我下面的代码,但当然它不起作用.
fn change_value(mut arr: &[i32]) {
arr[1] = 10;
}
fn main() {
let mut arr: [int; 4] = [1, 2, 3, 4];
change_value(&arr);
println!("this is {}", arr[1]);
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:"无法分配给不可变的vec内容__CODE__".
我一直在寻找,但作为一个漂亮的新手Rust程序员,我找不到任何东西.另外,Rust对其语言进行了大量修改并没有帮助,因此很多方法都被弃用或删除了.
我正在使用GCC版本4.7.1,但我也在GCC 4.8上尝试过这个.这是我正在尝试编译的代码:
#include <stdio.h>
void print(int amount) {
int i;
for (i = 0; i < 5; i++) {
printf("%d", i);
}
}
int main(int argc, char** argv) {
print(5);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它看起来应该工作,当我编译时......
gcc main.c
Run Code Online (Sandbox Code Playgroud)
编译需要一段时间,生成一个a.exe文件,a.exe文件就会消失.我的代码没有给我任何错误.
这是一个证据的GIF,因为有些人误解了这个:

我有以下结构:
project/
docs/
index.html
root.html
Run Code Online (Sandbox Code Playgroud)
我正在尝试迭代这个项目结构,以便我可以读取每个文件的内容来处理它们。所以我想说“搜索目录项目”,那么它将搜索所有文件,并且仅搜索第一级目录及其文件,因此如果存在另一个目录中包含文件docs/,它将忽略它。
目前,我尝试使用“path/filepath”库来完成此任务:
func traverse(path string, file os.FileInfo, err error) error {
if file, err := os.Open(file.Name()); err == nil {
defer file.Close()
if fileStat, err := file.Stat(); err == nil {
switch mode := fileStat.Mode(); {
case mode.IsDir():
fmt.Println("it be a directory! lets traverse", file.Name())
filepath.Walk(file.Name(), traverse)
case mode.IsRegular():
fmt.Println("the thingy ", file.Name(), " is a file")
}
} else {
return errors.New("failed to check status")
}
}
return errors.New("failed 2 …Run Code Online (Sandbox Code Playgroud) 代码可以转换的典型方法是什么?目前,我正在编写一种简单的编程语言,它的处理方式是递归的.循环的节点列表,并说当前节点是一个变量节点,它将调用一个emit_variable_node函数,它将字面上的一些代码附加到字符串,例如:
以下代码是psuedo-ish,我在C中编写我的项目,并编译为C.
char *file_contents;
void emit_variable_node(VariableNode *var) {
// I know += doesn't work on strings, just pretend it does.
file_contents += var.getType();
file_contents += " "; // a space
file_contents += var.getName();
// etc
}
Run Code Online (Sandbox Code Playgroud)
我还假设我们给出的代码已经过语义分析,并且是正确的.然后将file_contents字符串存储到临时文件中,该文件在由C编译器编译后删除.
这是一种不好的做法,还是有更好,更清洁的方法来做到这一点?