{"id":19657216,"url":"https://github.com/daheige/rust-bible","last_synced_at":"2025-04-10T05:09:20.622Z","repository":{"id":46704363,"uuid":"450126863","full_name":"daheige/rust-bible","owner":"daheige","description":"rust bible notes","archived":false,"fork":false,"pushed_at":"2025-02-21T02:11:50.000Z","size":2701,"stargazers_count":66,"open_issues_count":0,"forks_count":10,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T08:16:07.545Z","etag":null,"topics":["actix-web","async-std","axum","grpc","rust","rust-grpc","rust-job","rust-lang","rust-log","rust-mysql","rust-notes","rust-redis","rust-serde","rust-web","rust-yaml","tide","tokio"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/daheige.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-20T14:20:39.000Z","updated_at":"2025-02-21T02:11:53.000Z","dependencies_parsed_at":"2024-05-16T03:34:00.245Z","dependency_job_id":"cdc1d4b1-86e1-41fc-9463-b7c1ed0b719b","html_url":"https://github.com/daheige/rust-bible","commit_stats":{"total_commits":247,"total_committers":1,"mean_commits":247.0,"dds":0.0,"last_synced_commit":"83c3894e6c163899b9eb17017e888178e16fec36"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daheige%2Frust-bible","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daheige%2Frust-bible/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daheige%2Frust-bible/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daheige%2Frust-bible/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daheige","download_url":"https://codeload.github.com/daheige/rust-bible/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246916761,"owners_count":20854514,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actix-web","async-std","axum","grpc","rust","rust-grpc","rust-job","rust-lang","rust-log","rust-mysql","rust-notes","rust-redis","rust-serde","rust-web","rust-yaml","tide","tokio"],"created_at":"2024-11-11T15:30:49.946Z","updated_at":"2025-04-03T01:13:29.633Z","avatar_url":"https://github.com/daheige.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rust学习笔记\n运行本实战的约束：\n- rust edition：基于rust edition = \"2021\" \n- rust版本要求：需要安装rust v1.58.0 以上版本\n- 操作系统：建议使用linux系统（例如：ubuntu24.04或centos7.9+版本）或macOS系统。\n- 如果使用的是windows系统，建议使用WSL方式安装ubuntu系统。\n\n# rust从入门到实战\n\n- part1 rust基础,thread concurrent编程初体验\n- part2 serde json序列化处理，yaml文件读取，log日志库基础操作\n- part3 redis,mysql,kafka和pulsar mq基本使用\n- part4 rust异步编程基础--tokio和async-std两种不同的异步操作库使用\n- part5 axum,actix-web,tide框架使用\n- part6 rust 依赖注入和clap命令终端使用\n- part7 rust实战(rust web/job/grpc）综合使用\n- part8 rust ffi调用\n\n# rust install\n参考文档：\n- https://www.rust-lang.org/zh-CN/tools/install\n- https://kaisery.github.io/trpl-zh-cn/ch01-01-installation.html\n\n安装步骤：(以linux系统为例，这里我使用的是ubuntu系统）\n```shell\nexport RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static\nexport RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n```\n\n如果上述安装过程中比较慢，还可以使用如下方式安装rust。也就是说，第一次安装 rustup 的时候，如果按照官网教程 https://sh.rustup.rs 链接可能无法下载，可以先执行如下命令下载sh文件：\n```shell\nwget https://mirrors.ustc.edu.cn/misc/rustup-install.sh\n```\n\n然后把脚本中的 `RUSTUP_UPDATE_ROOT` 变量改为 `https://mirrors.ustc.edu.cn/rust-static/rustup`\n接着再执行sh rustup-install.sh即可快速安装rust\n```shell\nexport RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static\nexport RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup\nsh rustup-install.sh\n```\n为了后续rust组件或工具快速升级，建议设置环境变量: `vim ~/.bashrc` （这里需要根据实际情况设置，对于centos系统来说执行 vim ~/.bash_profile）\n```shell\nexport RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static\nexport RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup\nexport PATH=\"$HOME/.cargo/bin:$PATH\"\n```\n\n执行`source ~/.bashrc`或者 `source ~/.bash_profile` 生效\n\n# rustup升级rust\n```shell\nrustup update\n```\nrust版本查看\n```shell\nrustc --version\ncargo --version\n```\n\n# rust 1.70.x以上版本的crates发布\n需要添加--registry参数\n```shell\ncargo publish --registry crates-io\n```\n\n# 设置rust国内镜像\n参考文档\n- https://mirrors.ustc.edu.cn/help/rust-static.html\n- https://mirrors.ustc.edu.cn/help/crates.io-index.html\n\n为了提高访问速度，建议设置环境变量: vim ~/.bash_profile 或者vim ~/.bashrc\n```shell\nexport RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static\nexport RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup\nexport PATH=\"$HOME/.cargo/bin:$PATH\"\n```\n执行source ~/.bash_profile生效\n\n在用户目录.cargo目录目录中创建config.toml\n```shell\ncd ~/.cargo/\ntouch config.toml\n```\n添加如下内容：\n```toml\n# 源码地址\n[source.crates-io]\n#registry = \"https://github.com/rust-lang/crates.io-index\"\n# 指定镜像，可以根据实际情况选择不同的镜像\nreplace-with = 'ustc'\n\n# 清华大学\n[source.tuna]\nregistry = \"https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git\"\n\n# 中国科学技术大学\n[source.ustc]\nregistry = \"sparse+https://mirrors.ustc.edu.cn/crates.io-index/\"\n\n# 上海交通大学\n[source.sjtu]\nregistry = \"https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index\"\n\n# rustcc社区\n[source.rustcc]\nregistry = \"git://crates.rustcc.cn/crates.io-index\"\n\n[source.aliyun]\nregistry = \"https://code.aliyun.com/rustcc/crates.io-index\"\n[net]\ngit-fetch-with-cli=true\n[http]\ncheck-revoke = false\n```\n或者直接使用如下配置：\n```toml\n[source.crates-io]\nreplace-with = 'mirror' # 直接替换为mirror为tuna镜像\n\n[source.mirror]\nregistry = \"https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git\"\n\n[net]\ngit-fetch-with-cli=true\n[http]\ncheck-revoke = false\n```\n\n# 使用rsproxy代理安装rust更快\n步骤一：设置 Rustup 镜像， 修改配置 ~/.zshrc 或者 ~/.bashrc 或者 ~/.bash_profile 文件\n```shell\nexport RUSTUP_DIST_SERVER=\"https://rsproxy.cn\"\nexport RUSTUP_UPDATE_ROOT=\"https://rsproxy.cn/rustup\"\n```\n步骤二：安装 Rust（请先完成步骤一的环境变量导入并 source rc 文件或重启终端生效）\n```shell\ncurl --proto '=https' --tlsv1.2 -sSf https://rsproxy.cn/rustup-init.sh | sh\n```\n\n步骤三：设置 crates.io 镜像， 修改配置 ~/.cargo/config.toml，已支持git协议和sparse协议，Rust \u003e=1.68 版本建议使用 sparse-index，速度更快。\n```toml\n# 使用rsproxy\n[source.crates-io]\nreplace-with = 'rsproxy-sparse'\n\n[source.rsproxy]\nregistry = \"https://rsproxy.cn/crates.io-index\"\n[source.rsproxy-sparse]\nregistry = \"sparse+https://rsproxy.cn/index/\"\n[registries.rsproxy]\nindex = \"https://rsproxy.cn/crates.io-index\"\n[net]\ngit-fetch-with-cli=true\n[http]\ncheck-revoke = false\n```\n\n# docker环境搭建参考\n- https://github.com/rust-lang/docker-rust/tree/master/1.77.2\n- https://github.com/daheige/pyo3-in-action/blob/main/Dockerfile\n\n# rust编辑器选择\n\n可以使用vscode,clion都可以\n\n# vscode配置\n\n需要安装好 rust-analyzer 插件，然后配置setting.json\n\n``` json\n{\n    \"files.eol\": \"\\n\",\n    \"editor.formatOnSave\": true,\n    \"editor.fontSize\": 13,\n    \"workbench.colorTheme\": \"Monokai\",\n    \"rust.all_features\": true,\n    \"editor.formatOnPaste\": true,\n    \"editor.multiCursorModifier\": \"ctrlCmd\",\n    \"editor.snippetSuggestions\": \"top\",\n    \"[rust]\": {\n        \"editor.defaultFormatter\": \"rust-lang.rust-analyzer\"\n    }\n}\n```\n\n# rust语言程序设计\n\n- rust程序设计第二版 https://kaisery.github.io/trpl-zh-cn/title-page.html\n- 配套代码 https://github.com/daheige/myrust\n\n# rust package发布方法\n\nhttps://zhuanlan.zhihu.com/p/477390034\n\n# rust crates官网\n\nhttps://crates.io/\n可以搜到很多有用的第三方包，比如axum,actix-web,tide,serde等等\n\n# rust std库\n\n- https://rustwiki.org/zh-CN/std/\n- https://doc.rust-lang.org/std\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaheige%2Frust-bible","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaheige%2Frust-bible","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaheige%2Frust-bible/lists"}