From 73a9f0c0683276ced9f4b118e2239e235a4b4965 Mon Sep 17 00:00:00 2001 From: jaywcjlove Date: Tue, 15 Nov 2022 00:53:38 +0000 Subject: [PATCH] doc: about rust content (#70) ada64ac643a679c03859d356eb7e5e0420b1cce1 --- docs/rust.html | 80 ++++++++++++++++++++++++++++++++++++++++++++++++-- index.html | 3 ++ 2 files changed, 81 insertions(+), 2 deletions(-) diff --git a/docs/rust.html b/docs/rust.html index c3fc3f50..cdac12c5 100644 --- a/docs/rust.html +++ b/docs/rust.html @@ -42,8 +42,28 @@

Rust 快速参考备忘单,旨在为编写基本语法和方法提供帮助。

入门

-

入门

+

配置 vscode 调试

+ +

参考:https://github.com/vadimcn/vscode-lldb/blob/master/MANUAL.md#source-path-remapping

+

下载 CodeLLDB,选择 rust 自动生成 launch.json 文件

+
{
+  "configurations": [
+    // 添加一下行,使 vec、hashmap 等类型显示正常
+    "sourceLanguages": ["rust"]
+  ]
+}
+
+
+

将编译文件与标准库的位置进行映射

+
{
+  "lldb.launch.sourceMap": {
+    // 你自己的映射 hash 和映射路径
+    "/rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f": "/Users/feiwu/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust"
+  }
+}
+
+

Hello_World.rs

fn main() {
   println!("Hello, World!");
 }
@@ -1002,6 +1022,62 @@
 }
 
+

惯用转换

+

&str -> String

+
String::from("str");
+"str".to_string();
+"str".to_owned();
+
+

&str -> &[u8]

+
"str".as_bytes();
+
+

或者你也可以使用 b""

+
println!("{:?}", b"str");
+
+

&str -> Vec

+
"str".as_bytes().to_vec();
+"str".as_bytes().to_owned();
+
+

String -> &str

+
let s = String::from("str");
+let r = s.as_str();
+
+

String -> &[u8]

+
let s = String::from("str");
+let v = s.as_bytes();
+
+

String -> Vec

+
let s = String::from("str");
+let v = s.into_bytes();
+
+

&[u8] -> &str

+
let b = "str".as_bytes();
+let str = std::str::from_utf8(b).unwrap();
+
+

&[u8] -> String

+
let b = "str".as_bytes();
+let str = String::from_utf8(b.to_vec()).unwrap();
+
+

&[u8] -> Vec

+
let b = "str".as_bytes();
+let str = b.to_vec();
+
+
+
let b = "str".as_bytes();
+let str = b.to_owned();
+
+

Vec -> &str

+
let b = "str".as_bytes().to_vec();
+let s = std::str::from_utf8(&b).unwrap();
+
+

Vec -> &[u8]

+
let b = "str".as_bytes().to_vec();
+let s = b.as_slice();
+
+

Vec -> String

+
let b = "str".as_bytes().to_vec();
+let s = String::from_utf8(b).unwrap();
+

杂项

类型断言 type-casting

let a_int = 90; // int
diff --git a/index.html b/index.html
index 35a4afa7..62444cb9 100644
--- a/index.html
+++ b/index.html
@@ -454,6 +454,9 @@
 
   DemigodLiu
 
+
+  Jason Zhuang
+
 
   JetSquirrel