Ошибка no method named 'into_make_service' в Axum 0.7

Всем привет! Я пытаюсь создать небольшой сервер с использованием Axum.

Но при компиляции получаю такую ошибку:

error[E0599]: no method named `into_make_service` found for struct `Router<Pool<Postgres>>` in the current scope

Ошибка возникает на этой строке:

axum::serve(listener, app.into_make_service())

Компилятор предлагает использовать into_service(), но в большинстве примеров в интернете используется into_make_service().

Чего мне не хватает? Нужно ли что-то импортировать или включить какие-то фичи?

Вот зависимости из Cargo.toml:

axum = { version = "0.7", features = ["multipart", "http1"] }
tokio = { version = "1", features = ["full"] }
sqlx = { version = "0.7", features = ["postgres", "uuid", "runtime-tokio-native-tls", "chrono", "time"] }

Буду очень благодарен за помощь!

use axum::{
    routing::get,
    routing::post,
    Router,
    Extension,
};
use std::net::SocketAddr;
use tokio::net::TcpListener;
use sqlx::postgres::PgPoolOptions;

mod handlers;
mod models;

#[derive(Clone)]
struct AppState {
    db_pool: sqlx::PgPool,
    grpc_endpoint: String,
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let database_url: &str = "postgres://storage_service:password@localhost:5432/storage";
    let db_pool = PgPoolOptions::new()
        .max_connections(5)
        .connect(database_url)
        .await?;

    let state = AppState { 
        db_pool,
        grpc_endpoint: "http://192.168.1.82:3001".to_string(), 
    };

    let app = Router::new()
        .route("/upload", post(handlers::upload))
        .route("/files/:id", get(handlers::get_info))
        .route("/download/:id", get(handlers::download))
        .layer(Extension(state));

    let addr = SocketAddr::from(([0, 0, 0, 0], 3000));
    let listener = TcpListener::bind(addr).await?;
    println!("Server running on http://{}", addr);
    
    axum::serve(listener, app.into_make_service())
        .await
        .unwrap();

    Ok(())
} 

Ответы (0 шт):