我正在尝试添加redis作为 web::Data
我的actix web应用程序的上下文:
extern crate redis;
// std imports
use std::net::SocketAddr;
// external imports
use actix_web::{App, HttpServer};
use redis::Client
# [actix_rt::main]
async fn main() -> std::io::Result<()> {
// connect to redis
let redis_con = Client::open("redis://127.0.0.1:6379")
.unwrap()
.get_connection()
.unwrap();
HttpServer::new(move || App::new().data(redis_con).service(api::get_healthz))
.bind(SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 8080)?
.run()
.await
}
我得到以下错误: the trait bound 'redis::Connection: std::clone::Clone' is not satisfied in '[closure@src/main.rs:48:21: 48:81 redis_con:redis::Connection]'
我已经试着把它 Package 成 Arc<redis::Connection>
的子模块中的某些类型也不适用 redis::Connection
但没有实现 Sync
.
有没有生 rust 的概念,我没有看到在这种情况下?这是我第一个真正的生 rust 项目之一,所以可能有一些我非常粗略地忽略了。
1条答案
按热度按时间qacovj5a1#
这个答案是actix解决问题的一个最简单的例子。不过,实现你想要的东西可能有更短的方法。
首先需要导入
actix
机箱:然后定义你的演员:
现在运行项目:
去
http://localhost:8088/
应该把你的redis信息作为一个字符串给你。