如何用rust做基础语法作业

笔者目前正在学习rust的基础语法,便想通过用rust做学校在pintia上开放的题集来熟悉语法细节.

首先,学校的拼题A分成了若干的题集,我便通过rust的工作空间Cargo Workspaces - The Rust Programming Language (rust-lang.org)来进行依赖和编译目标的管理.

image-20231121211216100

​ 图1–中文rust book对工作空间的讲解

image-20231121211518713

​ 图2–笔者通过RustRover进行cargo的管理

同时,可以通过python脚本来快速创建*.rs文件

# Python 脚本来创建 7 个 .rs 文件,文件名为 7_x1.rs, 7_x2.rs, ..., 7_x7.rs

import os

# 定义根目录路径(在这里设置为当前目录,可以根据需要修改)
root_directory = "./week7/src"

# 循环创建文件
for i in range(1, 8):
    # 构建文件名
    file_name = f"7_{i}.rs"
    # 构建文件的完整路径
    file_path = os.path.join(root_directory, file_name)

    # 创建文件
    with open(file_path, 'w') as file:
        file.write(f"// This is file {file_name}\nfn input_parser() {{}}\nfn data_process() {{}}\nfn main() {{\n    // TODO: Implement main logic here\n}}")

# 打印完成消息
print("Files created successfully.")


image-20231121211732128

​ 图3–运行结果

最后,写上代码,直接利用rustrover的run配置就行了

image-20231121212031751

​ 图4–直接运行

当然,你也可以用wsl的rustc和cargo

image-20231121212223592

​ 图5–多种配置来帮助你编译运行

同时,你也可以选择不同的编译目标

image-20231121212301584

​ 图6–各种编译目标

可以看到,由于rust的官方库的健全,数据结构的丰富和对所有权的把控,写起来还是算方便的

// 7-2 计算m到n之间所有素数的和
/*计算m到n之间所有素数的和,其中 2 <= m <=n <=100

输入格式:
请在这里写输入格式。例如:输入两个正整数

输出格式:

请在这里描述输出格式。例如:输出两个正整数之间的素数和。*/

use std::io;

fn main() {
    // 你的代码写在这里...
    let mut numbers = Vec::new();
    let mut input_text = String::new();
    io::stdin().read_line(&mut input_text).expect("Failed to read line");
    numbers = input_text
        .split_whitespace()
        .map(|s| s.parse::<i32>().expect(""))
        .collect();

    if numbers.len() != 2 {
        eprintln!("You should provide exactly two numbers.");
        return;
    }
    let m = numbers[0];
    let n = numbers[1];

    if m < 2 || m > 100 || n < 2 || n > 100 || m > n {
        eprintln!("Numbers out of range.");
        return;
    }

    let sum: i32 = (m..=n).filter(|&x| is_prime(x)).sum();
    println!("{}", sum);
}
fn is_prime(num:i32) -> bool{
    if num <= 1 {
        return false;
    }
    for i in 2..=(num as f64).sqrt() as i32 {
        if num%i == 0{
            return false;
        }
    }
    true
}

美中不足的是在oj平台上编译时间过长,所以我更推荐在性能较为强大的自己的电脑上运行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值