Э
wrapping же крутится, с чего-бы младшим битам нулями становится?Но ещё раз: там умножение на 0

Size: a a a
Э
wrapping же крутится, с чего-бы младшим битам нулями становится?
A
в🧇
for _ in 0u8.. {} паникует?thread 'main' panicked at 'attempt to add with overflow', /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/ops/arith.rs:94:45
note: run with `RUST_BACKTRACE=1` environment variable to display a backtraceA
Э
for _ in 0u8.. {} паникует?thread 'main' panicked at 'attempt to add with overflow', /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/ops/arith.rs:94:45
note: run with `RUST_BACKTRACE=1` environment variable to display a backtraceв🧇
в🧇
c
#[async_trait]
pub trait UserRepo {
async fn save(&mut self, user: models::User) -> RepoResult<models::User>;
}type Connection = r2d2::PooledConnection<ConnectionManager<PgConnection>>;
type DbPool = r2d2::Pool<ConnectionManager<PgConnection>>;
#[derive(Clone)]
pub struct Database(DbPool);#[derive(Clone)]
pub struct App<Database = ()> {
pub db: Database,
}
#[async_trait]
impl<Database> Authorize for App<Database>
where
Database: repo::UserRepo + Send + Sync,
{
async fn authorize(&mut self, info: UserInfo) -> Result<models::User, UpdateUserFailure> {
let app = app_core::App {
db: Database::new(database_url).expect("Failed to create database"),
};
let app_lock = std::sync::Arc::new(app);
let app_data = web::Data::new(app_lock);pub async fn route(
body: Json<Body>,
app: Data<crate::App>,
)use app_core::app::AccessoAuthorize;
app.authorize(cardbox_core::app::UserInfo {
accesso_id: id,
first_name,
last_name,
})
.await;cannot borrow data in an Arc as mutable
trait DerefMut is required to modify through a dereference, but it is not implemented for std::sync::Arc<app_core::App<services::database::Database>>
Я пытаюсь понять в какой контейнер мне положить App, чтобы он Send + Sync и дереференсился для вызова на нем мутабельных методовЭ
#[async_trait]
pub trait UserRepo {
async fn save(&mut self, user: models::User) -> RepoResult<models::User>;
}type Connection = r2d2::PooledConnection<ConnectionManager<PgConnection>>;
type DbPool = r2d2::Pool<ConnectionManager<PgConnection>>;
#[derive(Clone)]
pub struct Database(DbPool);#[derive(Clone)]
pub struct App<Database = ()> {
pub db: Database,
}
#[async_trait]
impl<Database> Authorize for App<Database>
where
Database: repo::UserRepo + Send + Sync,
{
async fn authorize(&mut self, info: UserInfo) -> Result<models::User, UpdateUserFailure> {
let app = app_core::App {
db: Database::new(database_url).expect("Failed to create database"),
};
let app_lock = std::sync::Arc::new(app);
let app_data = web::Data::new(app_lock);pub async fn route(
body: Json<Body>,
app: Data<crate::App>,
)use app_core::app::AccessoAuthorize;
app.authorize(cardbox_core::app::UserInfo {
accesso_id: id,
first_name,
last_name,
})
.await;cannot borrow data in an Arc as mutable
trait DerefMut is required to modify through a dereference, but it is not implemented for std::sync::Arc<app_core::App<services::database::Database>>
Я пытаюсь понять в какой контейнер мне положить App, чтобы он Send + Sync и дереференсился для вызова на нем мутабельных методовArc<Mutex<T>>Э
АГ
#[async_trait]
pub trait UserRepo {
async fn save(&mut self, user: models::User) -> RepoResult<models::User>;
}type Connection = r2d2::PooledConnection<ConnectionManager<PgConnection>>;
type DbPool = r2d2::Pool<ConnectionManager<PgConnection>>;
#[derive(Clone)]
pub struct Database(DbPool);#[derive(Clone)]
pub struct App<Database = ()> {
pub db: Database,
}
#[async_trait]
impl<Database> Authorize for App<Database>
where
Database: repo::UserRepo + Send + Sync,
{
async fn authorize(&mut self, info: UserInfo) -> Result<models::User, UpdateUserFailure> {
let app = app_core::App {
db: Database::new(database_url).expect("Failed to create database"),
};
let app_lock = std::sync::Arc::new(app);
let app_data = web::Data::new(app_lock);pub async fn route(
body: Json<Body>,
app: Data<crate::App>,
)use app_core::app::AccessoAuthorize;
app.authorize(cardbox_core::app::UserInfo {
accesso_id: id,
first_name,
last_name,
})
.await;cannot borrow data in an Arc as mutable
trait DerefMut is required to modify through a dereference, but it is not implemented for std::sync::Arc<app_core::App<services::database::Database>>
Я пытаюсь понять в какой контейнер мне положить App, чтобы он Send + Sync и дереференсился для вызова на нем мутабельных методовc
Э
#[async_trait]
pub trait UserRepo {
async fn save(&mut self, user: models::User) -> RepoResult<models::User>;
}type Connection = r2d2::PooledConnection<ConnectionManager<PgConnection>>;
type DbPool = r2d2::Pool<ConnectionManager<PgConnection>>;
#[derive(Clone)]
pub struct Database(DbPool);#[derive(Clone)]
pub struct App<Database = ()> {
pub db: Database,
}
#[async_trait]
impl<Database> Authorize for App<Database>
where
Database: repo::UserRepo + Send + Sync,
{
async fn authorize(&mut self, info: UserInfo) -> Result<models::User, UpdateUserFailure> {
let app = app_core::App {
db: Database::new(database_url).expect("Failed to create database"),
};
let app_lock = std::sync::Arc::new(app);
let app_data = web::Data::new(app_lock);pub async fn route(
body: Json<Body>,
app: Data<crate::App>,
)use app_core::app::AccessoAuthorize;
app.authorize(cardbox_core::app::UserInfo {
accesso_id: id,
first_name,
last_name,
})
.await;cannot borrow data in an Arc as mutable
trait DerefMut is required to modify through a dereference, but it is not implemented for std::sync::Arc<app_core::App<services::database::Database>>
Я пытаюсь понять в какой контейнер мне положить App, чтобы он Send + Sync и дереференсился для вызова на нем мутабельных методовauthorize не используется мутабельный доступ, то нужно сделать#[async_trait]И вызывать на
impl<Database> Authorize for &App<Database>
where
Database: repo::UserRepo + Send + Sync,
&mut &App.c
authorize не используется мутабельный доступ, то нужно сделать#[async_trait]И вызывать на
impl<Database> Authorize for &App<Database>
where
Database: repo::UserRepo + Send + Sync,
&mut &App.Э
c