vieyahn2017 / goto

GO C C++ Rust
0 stars 1 forks source link

【Rust】cargo run如何执行非main.rs #18

Open vieyahn2017 opened 8 months ago

vieyahn2017 commented 8 months ago

如果你想在 Rust 项目中执行非 main.rs 的文件,可以使用 cargo run --bin <binary_name> 命令。其中 <binary_name> 是你要执行的二进制文件的名称。

例如,如果你的项目中有一个名为 foo.rs 的文件,并且你想要执行它,你可以使用以下命令:

cargo run --bin foo

这将编译并运行 foo.rs 文件中的代码。请注意,你需要在 Cargo.toml 文件中将 foo.rs 文件添加到 [[bin]] 部分中,以便 Cargo 可以将其编译为可执行文件。

vieyahn2017 commented 8 months ago

Cargo.toml


[[bin]]
name = "file"
path = "src/file.rs"

cargo run --bin file

vieyahn2017 commented 8 months ago

勉强写了一个能用的脚本 1.ps1


# PS D:\javaway\2023\rust\greeting> .\1.ps1  -source main -t rr
# PS D:\javaway\2023\rust\greeting> .\1.ps1  -source rr -t main

#$ErrorActionPreference = "Stop"
#$ErrorActionPreference = "Continue"

Param(
    [string]$t,
    [string]$source
)

if ($source -eq $null -or $source -eq '') {
    $source = "main"
}

Write-Host "source(s): $source"
Write-Host "target(t): $t"

## todo 检查名字重复
## 目前能自动报错:Rename-Item : 当文件已存在时,无法创建该文件。
Rename-Item -Path "$PWD\src\$source.rs" -NewName "$PWD\src\$t.rs"

## 这边检查错误码的代码也无法生效
# $lastExitCode = $LASTEXITCODE
# if ($lastExitCode -ne 0) {
#     Write-Host "重命名失败"
#     exit 1
# }

# 在Cargo.toml追加bin项
Add-Content -Path "$PWD\Cargo.toml" -Value "`n`n[[bin]]"
Add-Content -Path "$PWD\Cargo.toml" -Value "name = `"$t`""
Add-Content -Path "$PWD\Cargo.toml" -Value "path = `"src/$t.rs`""

Write-Host  cargo run --bin $t

## 这个一行搞定的命令,调不对
# (Get-Content -Path "$PWD\src\$t.rs" -Raw) | Set-Content -Path "$PWD\src\$t.rs" -Encoding UTF8 -NoNewline -Value "//cargo run --bin $t`r`n$($_)"
# #调试
# (Get-Content -Path "$PWD\src\main.rs" -Raw) | Set-Content -Path "$PWD\src\main.rs" -Encoding UTF8 -NoNewline -Value "//cargo run --bin $t`r`n$($_)"
# Get-Content -Path "$PWD\src\main.rs" -Raw
# Set-Content -Path "$PWD\src\main.rs" -Encoding UTF8 -NoNewline -Value "//cargo run --bin 1234`r`n5678"
# (Get-Content -Path "$PWD\src\main.rs" -Raw) | Set-Content -Path "$PWD\src\main.rs" -Encoding UTF8 -NoNewline -Value "//cargo run --bin $t" # 出错

$currentContent = Get-Content -Path "$PWD\src\$t.rs" -Raw
$newContent = "//cargo run --bin $t" + "`r`n" + $currentContent
Set-Content -Path "$PWD\src\$t.rs" -Value $newContent
vieyahn2017 commented 8 months ago

Linux下搭建Rust开发环境

如果不能访问外网,那么可以下载离线安装包拷贝到Linux机器上安装Rust。在这个网址中,根据自己的Linux版本选择合适的离线安装包: https://forge.rust-lang.org/infra/other-installation-methods.html#standalone-installers