在 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 请求(使用 reqwest 或 reqwest-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. 使用 tokio 和 async 进行异步请求
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 模式匹配游戏名
如果你需要匹配特定格式的游戏名(如 wow、lol、cod 等),可以用 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 获取、或者需要处理用户输入),可以告诉我,我可以提供更具体的实现方式。