diff --git a/libjrpc/src/targets/rust.rs b/libjrpc/src/targets/rust.rs index 27d8462..af5a8d4 100644 --- a/libjrpc/src/targets/rust.rs +++ b/libjrpc/src/targets/rust.rs @@ -159,7 +159,7 @@ impl RustCompiler { ) }) .collect::>(); - params.push("ctx: &Self::Context".to_string()); + params.push("ctx: &mut Self::Context".to_string()); let params = params.join(", "); let ret = method @@ -218,7 +218,7 @@ impl RustCompiler { f.a1("#[allow(non_snake_case)]"); f.a1( - "async fn handle(&self, msg: &JRPCRequest, function: &str, ctx: &Self::Context) -> Result<(bool, Value)> {", + "async fn handle(&self, msg: &JRPCRequest, function: &str, ctx: &mut Self::Context) -> Result<(bool, Value)> {", ); f.a2("match function {"); diff --git a/libjrpc/templates/Rust/src/lib.rs b/libjrpc/templates/Rust/src/lib.rs index 8cace17..b05b5c7 100644 --- a/libjrpc/templates/Rust/src/lib.rs +++ b/libjrpc/templates/Rust/src/lib.rs @@ -112,7 +112,7 @@ pub trait JRPCServerService: Send + Sync { &self, request: &JRPCRequest, function: &str, - ctx: &Self::Context, + ctx: &mut Self::Context, ) -> Result<(bool, Value)>; } @@ -165,12 +165,12 @@ impl JRPCSession { pub fn handle_request(&self, request: JRPCRequest, ctx: Context) -> () { let session = self.clone(); tokio::task::spawn(async move { - let context = ctx; - session.handle_request_awaiting(request, &context).await; + let mut context = ctx; + session.handle_request_awaiting(request, &mut context).await; }); } - pub async fn handle_request_awaiting(&self, request: JRPCRequest, ctx: &Context) -> () { + pub async fn handle_request_awaiting(&self, request: JRPCRequest, ctx: &mut Context) -> () { info!("Received request: {}", request.method); trace!("Request data: {:?}", request); let method: Vec<&str> = request.method.split('.').collect();