pass args by ref

This commit is contained in:
dasha_uwu
2025-09-17 14:21:55 +05:00
committed by Jason Volk
parent d6e95c51c0
commit 9c4d376bec
43 changed files with 97 additions and 101 deletions

View File

@@ -69,58 +69,54 @@ pub struct Services {
pub async fn build(server: Arc<Server>) -> Result<Arc<Self>> {
let db = Database::open(&server).await?;
let services = Arc::new(OnceServices::default());
macro_rules! build {
($tyname:ty) => {
<$tyname>::build(Args {
db: &db,
server: &server,
services: &services,
})?
};
}
let args = Args {
db: &db,
server: &server,
services: &services,
};
let res = Arc::new(Self {
account_data: build!(account_data::Service),
admin: build!(admin::Service),
appservice: build!(appservice::Service),
resolver: build!(resolver::Service),
client: build!(client::Service),
config: build!(config::Service),
emergency: build!(emergency::Service),
globals: build!(globals::Service),
key_backups: build!(key_backups::Service),
media: build!(media::Service),
presence: build!(presence::Service),
pusher: build!(pusher::Service),
alias: build!(rooms::alias::Service),
auth_chain: build!(rooms::auth_chain::Service),
delete: build!(rooms::delete::Service),
directory: build!(rooms::directory::Service),
event_handler: build!(rooms::event_handler::Service),
lazy_loading: build!(rooms::lazy_loading::Service),
metadata: build!(rooms::metadata::Service),
pdu_metadata: build!(rooms::pdu_metadata::Service),
read_receipt: build!(rooms::read_receipt::Service),
search: build!(rooms::search::Service),
short: build!(rooms::short::Service),
spaces: build!(rooms::spaces::Service),
state: build!(rooms::state::Service),
state_accessor: build!(rooms::state_accessor::Service),
state_cache: build!(rooms::state_cache::Service),
state_compressor: build!(rooms::state_compressor::Service),
threads: build!(rooms::threads::Service),
timeline: build!(rooms::timeline::Service),
typing: build!(rooms::typing::Service),
user: build!(rooms::user::Service),
federation: build!(federation::Service),
sending: build!(sending::Service),
server_keys: build!(server_keys::Service),
sync: build!(sync::Service),
transaction_ids: build!(transaction_ids::Service),
uiaa: build!(uiaa::Service),
users: build!(users::Service),
membership: build!(membership::Service),
deactivate: build!(deactivate::Service),
account_data: account_data::Service::build(&args)?,
admin: admin::Service::build(&args)?,
appservice: appservice::Service::build(&args)?,
resolver: resolver::Service::build(&args)?,
client: client::Service::build(&args)?,
config: config::Service::build(&args)?,
emergency: emergency::Service::build(&args)?,
globals: globals::Service::build(&args)?,
key_backups: key_backups::Service::build(&args)?,
media: media::Service::build(&args)?,
presence: presence::Service::build(&args)?,
pusher: pusher::Service::build(&args)?,
alias: rooms::alias::Service::build(&args)?,
auth_chain: rooms::auth_chain::Service::build(&args)?,
delete: rooms::delete::Service::build(&args)?,
directory: rooms::directory::Service::build(&args)?,
event_handler: rooms::event_handler::Service::build(&args)?,
lazy_loading: rooms::lazy_loading::Service::build(&args)?,
metadata: rooms::metadata::Service::build(&args)?,
pdu_metadata: rooms::pdu_metadata::Service::build(&args)?,
read_receipt: rooms::read_receipt::Service::build(&args)?,
search: rooms::search::Service::build(&args)?,
short: rooms::short::Service::build(&args)?,
spaces: rooms::spaces::Service::build(&args)?,
state: rooms::state::Service::build(&args)?,
state_accessor: rooms::state_accessor::Service::build(&args)?,
state_cache: rooms::state_cache::Service::build(&args)?,
state_compressor: rooms::state_compressor::Service::build(&args)?,
threads: rooms::threads::Service::build(&args)?,
timeline: rooms::timeline::Service::build(&args)?,
typing: rooms::typing::Service::build(&args)?,
user: rooms::user::Service::build(&args)?,
federation: federation::Service::build(&args)?,
sending: sending::Service::build(&args)?,
server_keys: server_keys::Service::build(&args)?,
sync: sync::Service::build(&args)?,
transaction_ids: transaction_ids::Service::build(&args)?,
uiaa: uiaa::Service::build(&args)?,
users: users::Service::build(&args)?,
membership: membership::Service::build(&args)?,
deactivate: deactivate::Service::build(&args)?,
manager: Mutex::new(None),
server,