在这个比较中,我们将使用Rust和Go来创建一个简单的web服务,并展示两种语言的基本语法和结构。
Rust:
extern crate hyper;
use hyper::{Body, Response, Server};
use hyper::service::{service_fn, service_fn_ok};
async fn hello_world(_req: hyper::Request<Body>) -> Result<Response<Body>, hyper::Error> {
Ok(Response::new(Body::from("Hello World from Rust!")))
}
#[tokio::main]
async fn main() {
let addr = ([127, 0, 0, 1], 3000).into();
let make_svc = service_fn_ok(hello_world);
let server = Server::bind(&addr).serve(make_svc);
if let Err(e) = server.await {
eprintln!("server error: {}", e);
}
}
Go:
package main
import (
"fmt"
"log"
"net/http"
)
func helloHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World from Go!")
}
func main() {
http.HandleFunc("/", helloHandler)
log.Fatal(http.ListenAndServe(":3000", nil))
}
在这两个例子中,我们都创建了一个简单的web服务,监听本地的3000端口,并对所有的HTTP请求返回"Hello World"消息。虽然语言和语法细节不同,但是核心的web服务创建过程是相似的。在Rust中,我们使用了hyper
库来创建服务,并通过异步的方式处理请求。在Go中,我们直接使用了标准库中的net/http
包来处理HTTP请求。两种语言都展示了如何启动一个简单的web服务器,并响应HTTP请求。