Skip to content

Commit

Permalink
fixed clippy errors (#157)
Browse files Browse the repository at this point in the history
  • Loading branch information
hardliner66 committed Jan 9, 2021
1 parent ee26355 commit 641f627
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 27 deletions.
6 changes: 3 additions & 3 deletions src/actor/actor_cell.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ use crate::{
actor::{props::ActorFactory, *},
kernel::{
kernel_ref::{dispatch, dispatch_any, KernelRef},
mailbox::{AnySender, MailboxSender},
mailbox::{AnyEnqueueError, AnySender, MailboxSender},
},
system::{
timer::{Job, OnceJob, RepeatJob, ScheduleId, Timer},
Expand Down Expand Up @@ -124,7 +124,7 @@ impl ActorCell {
&self,
msg: &mut AnyMessage,
sender: crate::actor::Sender,
) -> Result<(), ()> {
) -> Result<(), AnyEnqueueError> {
let mb = &self.inner.mailbox;
let k = self.kernel();

Expand Down Expand Up @@ -603,7 +603,7 @@ where
T: Message + Into<M>,
M: Message,
{
let delay = std::cmp::max(time.timestamp() - Utc::now().timestamp(), 0 as i64);
let delay = std::cmp::max(time.timestamp() - Utc::now().timestamp(), 0_i64);
let delay = Duration::from_secs(delay as u64);

let id = Uuid::new_v4();
Expand Down
5 changes: 3 additions & 2 deletions src/actor/actor_ref.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use crate::{
props::{ActorArgs, ActorFactory, ActorFactoryArgs},
Actor, ActorPath, ActorUri, BoxActorProd, CreateError,
},
kernel::mailbox::AnyEnqueueError,
system::{ActorSystem, SystemMsg},
AnyMessage, Envelope, Message,
};
Expand Down Expand Up @@ -192,7 +193,7 @@ impl BasicActorRef {
&self,
msg: Msg,
sender: impl Into<Option<BasicActorRef>>,
) -> Result<(), ()>
) -> Result<(), AnyEnqueueError>
where
Msg: Message + Send,
{
Expand All @@ -203,7 +204,7 @@ impl BasicActorRef {
&self,
msg: &mut AnyMessage,
sender: impl Into<Option<BasicActorRef>>,
) -> Result<(), ()> {
) -> Result<(), AnyEnqueueError> {
self.cell.send_any_msg(msg, sender.into())
}
}
Expand Down
19 changes: 7 additions & 12 deletions src/kernel/kernel_ref.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use futures::{channel::mpsc::Sender, task::SpawnExt, SinkExt};
use crate::{
actor::{MsgError, MsgResult},
kernel::{
mailbox::{AnySender, MailboxSchedule, MailboxSender},
mailbox::{AnyEnqueueError, AnySender, MailboxSchedule, MailboxSender},
KernelMsg,
},
system::ActorSystem,
Expand Down Expand Up @@ -72,18 +72,13 @@ pub fn dispatch_any(
mbox: &Arc<dyn AnySender>,
kernel: &KernelRef,
sys: &ActorSystem,
) -> Result<(), ()> {
match mbox.try_any_enqueue(msg, sender) {
Ok(_) => {
if !mbox.is_sched() {
mbox.set_sched(true);
kernel.schedule(sys);
}

Ok(())
) -> Result<(), AnyEnqueueError> {
mbox.try_any_enqueue(msg, sender).map(|_| {
if !mbox.is_sched() {
mbox.set_sched(true);
kernel.schedule(sys);
}
Err(_) => Err(()),
}
})
}

unsafe impl Send for KernelRef {}
Expand Down
17 changes: 13 additions & 4 deletions src/kernel/mailbox.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,17 @@ pub trait MailboxSchedule {
fn is_scheduled(&self) -> bool;
}

#[derive(Debug)]
pub struct AnyEnqueueError;

impl From<()> for AnyEnqueueError {
fn from(_: ()) -> AnyEnqueueError {
AnyEnqueueError
}
}

pub trait AnySender: Send + Sync {
fn try_any_enqueue(&self, msg: &mut AnyMessage, sender: Sender) -> Result<(), ()>;
fn try_any_enqueue(&self, msg: &mut AnyMessage, sender: Sender) -> Result<(), AnyEnqueueError>;

fn set_sched(&self, b: bool);

Expand Down Expand Up @@ -64,13 +73,13 @@ impl<Msg> AnySender for MailboxSender<Msg>
where
Msg: Message,
{
fn try_any_enqueue(&self, msg: &mut AnyMessage, sender: Sender) -> Result<(), ()> {
let actual = msg.take()?;
fn try_any_enqueue(&self, msg: &mut AnyMessage, sender: Sender) -> Result<(), AnyEnqueueError> {
let actual = msg.take().map_err(|_| AnyEnqueueError)?;
let msg = Envelope {
msg: actual,
sender,
};
self.try_enqueue(msg).map_err(|_| ())
self.try_enqueue(msg).map_err(|_| AnyEnqueueError)
}

fn set_sched(&self, b: bool) {
Expand Down
12 changes: 7 additions & 5 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ pub struct AnyMessage {
pub msg: Option<Box<dyn Any + Send>>,
}

pub struct DowncastAnyMessageError;

impl AnyMessage {
pub fn new<T>(msg: T, one_time: bool) -> Self
where
Expand All @@ -75,7 +77,7 @@ impl AnyMessage {
}
}

pub fn take<T>(&mut self) -> Result<T, ()>
pub fn take<T>(&mut self) -> Result<T, DowncastAnyMessageError>
where
T: Any + Message,
{
Expand All @@ -85,16 +87,16 @@ impl AnyMessage {
if m.is::<T>() {
Ok(*m.downcast::<T>().unwrap())
} else {
Err(())
Err(DowncastAnyMessageError)
}
}
None => Err(()),
None => Err(DowncastAnyMessageError),
}
} else {
match self.msg.as_ref() {
Some(m) if m.is::<T>() => Ok(m.downcast_ref::<T>().cloned().unwrap()),
Some(_) => Err(()),
None => Err(()),
Some(_) => Err(DowncastAnyMessageError),
None => Err(DowncastAnyMessageError),
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/system.rs
Original file line number Diff line number Diff line change
Expand Up @@ -760,7 +760,7 @@ impl Timer for ActorSystem {
T: Message + Into<M>,
M: Message,
{
let delay = std::cmp::max(time.timestamp() - Utc::now().timestamp(), 0 as i64);
let delay = std::cmp::max(time.timestamp() - Utc::now().timestamp(), 0_i64);
let delay = Duration::from_secs(delay as u64);

let id = Uuid::new_v4();
Expand Down

0 comments on commit 641f627

Please sign in to comment.