pub trait UserInfoWriter: Send + Sync {
// Required methods
fn create_user<'life0, 'async_trait>(
&'life0 self,
user_info: UserInfo,
) -> Pin<Box<dyn Future<Output = Result<(), RwError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn drop_user<'life0, 'async_trait>(
&'life0 self,
id: u32,
) -> Pin<Box<dyn Future<Output = Result<(), RwError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn update_user<'life0, 'async_trait>(
&'life0 self,
user: UserInfo,
update_fields: Vec<UpdateField>,
) -> Pin<Box<dyn Future<Output = Result<(), RwError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn grant_privilege<'life0, 'async_trait>(
&'life0 self,
users: Vec<u32>,
privileges: Vec<GrantPrivilege>,
with_grant_option: bool,
grantor: u32,
) -> Pin<Box<dyn Future<Output = Result<(), RwError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn revoke_privilege<'life0, 'async_trait>(
&'life0 self,
users: Vec<u32>,
privileges: Vec<GrantPrivilege>,
granted_by: u32,
revoke_by: u32,
revoke_grant_option: bool,
cascade: bool,
) -> Pin<Box<dyn Future<Output = Result<(), RwError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
}