async fn index(_: Request) -> Result<&'static str> {
Ok(“Hello Viz”)
}
#[tokio::main]
async fn main() -> Result<()> {
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
println!(“listening on {}”, addr);
let app = Router::new().get("/", index);
if let Err(err) = Server::bind(&addr)
.serve(ServiceMaker::from(app))
.await
{
println!("{}", err);
}
Ok(())
}
### 4. 运行结果
如果你以上步骤没有出错,那么在终端中运行
cargo run
效果如下图
最后一行的意思是正在监听本地的127.0.0.1的3000端口,说明程序没有出错
此时在浏览器打开网址
http://localhost:3000/
>
> #### 注意
>
>
> localhost指向127.0.0.1
>
>
>
此时页面应该是这个样子的

## 二、Hello Viz代码详解

从整体上来看,这块代码主要分为3个部分,分别是导入组件,处理index请求和主程序
### 导入组件
首先导入了SocketAddr,用来表示socket地址,然后导入了Viz的一些组件
* Request 请求
* Result 响应
* Router 路由
* Server 服务器
* ServiceMaker 服务

### 处理请求
这里使用异步函数来实现index的处理,传入Request,这个过程系统会自动为我们处理。然后响应的是字符串类型,在函数体中返回了字符串“Hello Viz”
### 主函数
在Viz中,主函数也是异步函数,使用addr表示本地地址和监听的端口,然后挂载Router,使与index处理器相联系,再开启服务器。
## 三、常见用法
### 简单的处理程序
async fn index(_: Request) -> Result {
Ok(Response::text(“Hello, World!”))
}
async fn about(_: Request) -> Result<&'static str> {
Ok(“About Me!”)
}
async fn not_found(_: Request) -> Result {
Ok(“Not Found!”)
}
### 实现处理程序特质
#[derive(Clone)]
struct MyHandler {
code: Arc,
}
#[async_trait]
impl Handler for MyHan