在 Debian 上配置 Rust 网络
一 安装与网络加速
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh,安装后执行 source $HOME/.cargo/env 使环境生效。为后续更新与工具链管理,建议运行 rustup update。如使用国内网络,可通过设置镜像加速安装与包索引:
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-staticexport RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup$HOME/.cargo/config 写入
[source.crates-io] registry = "https://github.com/rust-lang/crates.io-index" replace-with = 'ustc'[source.ustc] registry = "git://mirrors.ustc.edu.cn/crates.io-index"二 代理配置
export http_proxy=http://your.proxy.server:portexport https_proxy=https://your.proxy.server:port$HOME/.cargo/config.toml 写入
[http] proxy = "http://your.proxy.server:port"[https] proxy = "https://your.proxy.server:port"gsettings 配置系统代理,影响桌面会话中的网络请求
gsettings set org.gnome.system.proxy mode 'manual'gsettings set org.gnome.system.proxy.http host 'your.proxy.server'gsettings set org.gnome.system.proxy.http port your_portgsettings set org.gnome.system.proxy.https host 'your.proxy.server'gsettings set org.gnome.system.proxy.https port your_port
提示:某些环境下可能需要同时配置 HTTP_PROXY/HTTPS_PROXY(大写)以覆盖更多工具;若代理需要认证,使用 http://user:pass@host:port 格式。三 常用网络库与依赖配置
Cargo.toml 中添加依赖(示例):
[dependencies]reqwest = "0.11"tokio = { version = "1", features = ["full"] }[dependencies]hyper = "0.14"tokio = { version = "1", features = ["full"] }[dependencies]tokio = { version = "1", features = ["full"] }四 快速示例
src/main.rs):
use reqwest; use tokio;#[tokio::main] async fn main() -> Result<(), reqwest::Error> { let res = reqwest::get("https://httpbin.org/get").await?; let body = res.text().await?; println!("Response: {}", body); Ok(()) }cargo runCargo.toml):tokio = { version = "1", features = ["full"] }src/main.rs):
use tokio::net::{TcpListener, TcpStream};use tokio::io::{AsyncReadExt, AsyncWriteExt};#[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { let listener = TcpListener::bind("127.0.0.1:8080").await?; loop { let (mut socket, _) = listener.accept().await?; tokio::spawn(async move { let mut buf = [0; 1024]; loop { let n = match socket.read(&mut buf).await { Ok(0) => return, Ok(n) => n, Err(e) => { eprintln!("read: {}", e); return } }; if let Err(e) = socket.write_all(&buf[..n]).await { eprintln!("write: {}", e); return } } }); } }cargo run,测试:nc localhost 8080 或 telnet localhost 8080