网站首页 网站地图
网站首页 > 手机游戏 > rust如何查找游戏名

rust如何查找游戏名

时间:2026-03-17 12:42:12

在 Rust 中查找游戏名(例如《魔兽世界》、《英雄联盟》、《使命召唤》等)通常涉及以下几种方式:

✅ 一、直接使用字符串查找(最简单)

如果你只是想在 Rust 中查找一个字符串是否存在于某个列表中,可以使用 contains() 方法。

示例代码:

fn main() {
    let game_names: Vec<&str> = vec!["wow", "leagueoflegends", "callofduty", "minecraft"];

    let game_name = "wow";
    if game_names.contains(&game_name) {
        println!("游戏名存在!");
    } else {
        println!("游戏名不存在。");
    }
}

✅ 二、使用 std::collections::HashSet 进行快速查找

如果你需要快速查找某个游戏名是否存在于集合中,使用 HashSet 是最高效的。

示例代码:

use std::collections::HashSet;

fn main() {
    let game_names: HashSet<&str> = ["wow", "leagueoflegends", "callofduty", "minecraft"].iter().cloned().collect();

    let game_name = "wow";
    if game_names.contains(&game_name) {
        println!("游戏名存在!");
    } else {
        println!("游戏名不存在。");
    }
}

✅ 三、通过 API 或数据库查找游戏名

如果你需要从外部数据源(如数据库、API)中查找游戏名,可以使用以下方法:

1. HTTP 请求(使用 reqwestreqwest-http

use reqwest::Client;

fn main() {
    let client = Client::new();
    let url = "https://api.example.com/games";

    let response = client.get(url).send().unwrap();
    let mut contents = String::new();
    response.read_to_string(&mut contents).unwrap();

    if contents.contains("wow") {
        println!("游戏名存在!");
    }
}

2. 使用 tokioasync 进行异步请求

use tokio::spawn;
use reqwest::Client;

async fn fetch_games() -> String {
    let client = Client::new();
    let url = "https://api.example.com/games";

    let response = client.get(url).send().await.unwrap();
    let mut contents = String::new();
    response.read_to_string(&mut contents).await.unwrap();

    contents
}

fn main() {
    spawn(async move {
        let contents = fetch_games().await;
        if contents.contains("wow") {
            println!("游戏名存在!");
        }
    }).await;
}

✅ 四、使用 serde 解析 JSON 数据

如果游戏名是通过 JSON 数据返回的,可以使用 serde 解析:

use serde::Deserialize;

#[derive(Deserialize)]
struct Game {
    name: String,
}

fn main() {
    let json = r#"[{"name": "wow"}, {"name": "leagueoflegends"}]"#;
    let games: Vec<Game> = serde_json::from_str(json).unwrap();

    for game in games {
        if game.name == "wow" {
            println!("游戏名存在!");
            break;
        }
    }
}

✅ 五、使用 regex 模式匹配游戏名

如果你需要匹配特定格式的游戏名(如 wowlolcod 等),可以用 regex 模块。

use regex::Regex;

fn main() {
    let re = Regex::new(r"^(wow|lol|cod)$").unwrap();

    if re.is_match("wow") {
        println!("游戏名存在!");
    }
}

✅ 六、使用 std::env 获取环境变量

如果你的游戏名是通过环境变量传入的,可以使用 std::env::var

use std::env;

fn main() {
    let game_name = env::var("GAME_NAME").unwrap_or("default".to_string());

    if game_name == "wow" {
        println!("游戏名存在!");
    }
}

✅ 总结

方法 适用场景
contains() 简单字符串匹配
HashSet 快速查找
HTTP 请求 从 API 或数据库获取
serde 解析 JSON 数据
regex 匹配特定格式的字符串
env 从环境变量中获取

如果你有具体的场景(比如从数据库查询、从 API 获取、或者需要处理用户输入),可以告诉我,我可以提供更具体的实现方式。