rust String转i32
时间: 2023-10-17 18:21:00 浏览: 51
可以使用parse()方法将String类型转换为i32类型。
例如:
```rust
let s = String::from("123");
let n: i32 = s.parse().unwrap();
println!("{}", n); // 输出:123
```
注意:parse()方法返回一个Result枚举类型,需要使用unwrap()方法将其转换为i32类型。如果转换失败,会返回Err类型。
相关问题
rust 将string里的数值存到i32为变量里
可以使用parse方法将string类型的数值转换为i32类型的变量。例如:
```rust
let my_string = "123";
let my_number = my_string.parse::<i32>().unwrap();
```
这里,我们首先定义了一个字符串my_string,它包含了一个数值"123"。然后,我们使用parse方法将该字符串转换为i32类型的变量my_number。最后,我们使用unwrap方法获取my_number的值。
如果字符串中包含的不是一个有效的数值,则parse方法会返回一个错误。因此,通常需要使用unwrap或者其他的错误处理方法来处理可能的错误。
rust json 蛇形和驼峰互转
在 Rust 中,可以使用 serde 库来进行 JSON 的序列化和反序列化。而 serde 提供了一个 feature 叫做 `serde_with`,可以方便地进行蛇形和驼峰的互转。
首先需要在 Cargo.toml 中添加以下依赖:
```toml
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_with = { version = "1.9", features = ["serde_json"] }
```
然后定义一个 struct,使用 `#[serde(rename_all = "xxx")]` 属性来指定字段名的转换方式。其中,`xxx` 可以是 `snake_case`、`camelCase`、`PascalCase` 等。
```rust
use serde::{Deserialize, Serialize};
use serde_with::serde_as;
#[derive(Debug, Deserialize, Serialize)]
struct User {
#[serde(rename = "id")]
user_id: i32,
#[serde(rename = "userName")]
user_name: String,
#[serde(rename = "createdAt")]
#[serde_as(as = "DateTime<Local>", rename = "createdAt")]
created_at: DateTime<Local>,
}
```
在上面的例子中,`user_id` 和 `user_name` 使用了 `rename` 属性来分别指定了转换后的字段名,`created_at` 使用了 `serde_as` 来指定了字段名和数据类型的转换方式。
如果要将 JSON 字符串转换为 struct,可以使用 `serde_json::from_str` 方法:
```rust
use serde_json::from_str;
let json_str = r#"{ "id": 1, "userName": "Alice", "createdAt": "2021-01-01T00:00:00+08:00" }"#;
let user: User = from_str(json_str).unwrap();
println!("{:?}", user);
```
如果要将 struct 转换为 JSON 字符串,可以使用 `serde_json::to_string` 方法:
```rust
use serde_json::to_string;
let user = User {
user_id: 1,
user_name: "Alice".to_owned(),
created_at: Local::now(),
};
let json_str = to_string(&user).unwrap();
println!("{}", json_str);
```
在输出的 JSON 字符串中,字段名就会按照指定的转换方式进行转换。