diff --git a/docs/rust.md b/docs/rust.md index 0cc7799..937a06b 100644 --- a/docs/rust.md +++ b/docs/rust.md @@ -6,6 +6,35 @@ Rust 快速参考备忘单,旨在为编写基本语法和方法提供帮助。 入门 --- +### 配置 vscode 调试 + + +参考: + +下载 CodeLLDB,选择 rust 自动生成 launch.json 文件 + +```json +{ + "configurations": [ + // 添加一下行,使 vec、hashmap 等类型显示正常 + "sourceLanguages": ["rust"] + ] +} +``` + +---- + +将编译文件与标准库的位置进行映射 + +```json +{ + "lldb.launch.sourceMap": { + // 你自己的映射 hash 和映射路径 + "/rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f": "/Users/feiwu/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust" + } +} +``` + ### Hello_World.rs ```rust @@ -981,9 +1010,108 @@ fn dead_end() -> ! { panic!("panic!!!!!"); } ``` - +惯用转换 +----- + +### &str -> String + +```rust +String::from("str"); +"str".to_string(); +"str".to_owned(); +``` + +### &str -> &[u8] + +```rust +"str".as_bytes(); +``` + +或者你也可以使用 `b""` + +```rust +println!("{:?}", b"str"); +``` + +### &str -> Vec + +```rust +"str".as_bytes().to_vec(); +"str".as_bytes().to_owned(); +``` + +### String -> &str + +```rust +let s = String::from("str"); +let r = s.as_str(); +``` + +### String -> &[u8] + +```rust +let s = String::from("str"); +let v = s.as_bytes(); +``` + +### String -> Vec + +```rust +let s = String::from("str"); +let v = s.into_bytes(); +``` + +### &[u8] -> &str + +```rust +let b = "str".as_bytes(); +let str = std::str::from_utf8(b).unwrap(); +``` + +### &[u8] -> String + +```rust +let b = "str".as_bytes(); +let str = String::from_utf8(b.to_vec()).unwrap(); +``` + +### &[u8] -> Vec + +```rust +let b = "str".as_bytes(); +let str = b.to_vec(); +``` + +---- + +```rust +let b = "str".as_bytes(); +let str = b.to_owned(); +``` + +### Vec -> &str + +```rust +let b = "str".as_bytes().to_vec(); +let s = std::str::from_utf8(&b).unwrap(); +``` + +### Vec -> &[u8] + +```rust +let b = "str".as_bytes().to_vec(); +let s = b.as_slice(); +``` + +### Vec -> String + +```rust +let b = "str".as_bytes().to_vec(); +let s = String::from_utf8(b).unwrap(); +``` + 杂项 -----