From c0e5bcc9a85bfefa77e23dd6edaac4ac52fc5bca Mon Sep 17 00:00:00 2001 From: Yuma Hiramatsu Date: Sat, 28 Aug 2021 12:20:52 +0900 Subject: [PATCH] Type alias --- rclrust-msg/src/_core/mod.rs | 3 +++ rclrust/src/client.rs | 18 +++++------------- rclrust/src/service.rs | 8 +++----- rclrust/src/subscription.rs | 8 ++++---- 4 files changed, 15 insertions(+), 22 deletions(-) diff --git a/rclrust-msg/src/_core/mod.rs b/rclrust-msg/src/_core/mod.rs index f03127fd..7510edab 100644 --- a/rclrust-msg/src/_core/mod.rs +++ b/rclrust-msg/src/_core/mod.rs @@ -10,3 +10,6 @@ pub mod traits; pub use sequence::{FFISeq, OwnedFFISeq, RefFFISeq}; pub use string::{FFIString, FFIWString, OwnedFFIString, OwnedFFIWString}; pub use traits::{ActionT, FFIFromRust, FFIToRust, InternalDefault, MessageT, ServiceT}; + +pub type ServiceRequestRaw = <::Request as MessageT>::Raw; +pub type ServiceResponseRaw = <::Response as MessageT>::Raw; diff --git a/rclrust/src/client.rs b/rclrust/src/client.rs index ecca3563..b792bd59 100644 --- a/rclrust/src/client.rs +++ b/rclrust/src/client.rs @@ -11,7 +11,7 @@ use std::{ use anyhow::{Context as _, Result}; use futures::channel::{mpsc, oneshot}; -use rclrust_msg::_core::{FFIToRust, MessageT, ServiceT}; +use rclrust_msg::_core::{FFIToRust, MessageT, ServiceResponseRaw, ServiceT}; use crate::{ error::{RclRustError, ToRclRustResult}, @@ -89,14 +89,12 @@ impl RclClient { Ok(sequence_number) } - fn take_response( - &self, - ) -> Result<(rcl_sys::rmw_request_id_t, ::Raw)> + fn take_response(&self) -> Result<(rcl_sys::rmw_request_id_t, ServiceResponseRaw)> where Srv: ServiceT, { let mut request_header = MaybeUninit::uninit(); - let mut response = ::Raw::default(); + let mut response = Default::default(); unsafe { rcl_sys::rcl_take_response( self.raw(), @@ -153,10 +151,7 @@ impl Drop for RclClient { } } -type ChannelMessage = ( - rcl_sys::rmw_request_id_t, - <::Response as MessageT>::Raw, -); +type ChannelMessage = (rcl_sys::rmw_request_id_t, ServiceResponseRaw); pub struct Client where @@ -185,10 +180,7 @@ where let callback = { let pendings = Arc::clone(&pendings); - move |(req_header, res): ( - rcl_sys::rmw_request_id_t, - ::Raw, - )| { + move |(req_header, res): (rcl_sys::rmw_request_id_t, ServiceResponseRaw)| { pendings .lock() .unwrap() diff --git a/rclrust/src/service.rs b/rclrust/src/service.rs index a3b38dc7..0ab9e702 100644 --- a/rclrust/src/service.rs +++ b/rclrust/src/service.rs @@ -7,7 +7,7 @@ use std::{ use anyhow::{Context, Result}; use futures::channel::mpsc; -use rclrust_msg::_core::{MessageT, ServiceT}; +use rclrust_msg::_core::{MessageT, ServiceRequestRaw, ServiceT}; use crate::{ error::{RclRustError, ToRclRustResult}, @@ -62,14 +62,12 @@ impl RclService { &self.r#impl } - fn take_request( - &self, - ) -> Result<(rcl_sys::rmw_request_id_t, ::Raw)> + fn take_request(&self) -> Result<(rcl_sys::rmw_request_id_t, ServiceRequestRaw)> where Srv: ServiceT, { let mut request_header = MaybeUninit::uninit(); - let mut request = ::Raw::default(); + let mut request = Default::default(); unsafe { rcl_sys::rcl_take_request( self.raw(), diff --git a/rclrust/src/subscription.rs b/rclrust/src/subscription.rs index 7d139b7e..141f27ed 100644 --- a/rclrust/src/subscription.rs +++ b/rclrust/src/subscription.rs @@ -64,11 +64,11 @@ impl RclSubscription { &self.r#impl } - fn take(&self) -> Result> + fn take(&self) -> Result where T: MessageT, { - let mut message = T::Raw::default(); + let mut message = Default::default(); unsafe { rcl_sys::rcl_take( self.raw(), @@ -80,7 +80,7 @@ impl RclSubscription { .with_context(|| "rcl_sys::rcl_take in RclSubscription::take")?; } - Ok(Arc::new(message)) + Ok(message) } fn topic_name(&self) -> String { @@ -226,7 +226,7 @@ where fn invoke(&mut self) -> Result<()> { if let Some(ref mut tx) = self.tx { - match tx.try_send(WorkerMessage::Message(self.handle.take::()?)) { + match tx.try_send(WorkerMessage::Message(Arc::new(self.handle.take::()?))) { Ok(_) => (), Err(e) if e.is_disconnected() => self.stop(), Err(_) => {