eprintln!("Q_GEN={:?} U_GEN={:?}", u_gen, q_gen);
- if u_gen > q_gen { Err(GameError::Conflict)? }
+ if u_gen > q_gen { throw!(GameError::Conflict) }
if pc.held != None && pc.held != Some(player) {
- Err(GameError::PieceHeld)?
+ throw!(GameError::PieceHeld)
};
let (update, logents) = form.op.op(gs,player,piece,&lens)?;
Ok((update, logents))
})() {
Err(err) => {
let err : GameError = err;
- if let GameError::InternalErrorSVG(svg) = err { Err(svg)? }
+ if let GameError::InternalErrorSVG(svg) = err { throw!(svg) }
eprintln!("API {:?} => {:?}", &form, &err);
},
Ok((update, logents)) => {
let pl = gs.players.byid(player).unwrap();
let pc = gs.pieces.byid_mut(piece).unwrap();
- if pc.held.is_some() { Err(GameError::PieceHeld)? }
+ if pc.held.is_some() { throw!(GameError::PieceHeld) }
pc.held = Some(player);
let update = PieceUpdateOp::Modify(());
let pl = gs.players.byid(player).unwrap();
let pc = gs.pieces.byid_mut(piece).unwrap();
- if pc.held != Some(player) { Err(GameError::PieceHeld)? }
+ if pc.held != Some(player) { throw!(GameError::PieceHeld) }
pc.held = None;
let update = PieceUpdateOp::Modify(());
{
return Authorised::authorise();
}
- Err(anyhow!("{}: euid mismatch: client={:?} server={:?} wanted={:?}{}",
- &self.desc, client_euid, server_euid, wanted,
- xinfo.unwrap_or("")))?
+ throw!(anyhow!("{}: euid mismatch: client={:?} server={:?} wanted={:?}{}",
+ &self.desc, client_euid, server_euid, wanted,
+ xinfo.unwrap_or("")));
}
fn map_auth_err(&self, ae: AuthorisationError) -> MgmtError {
pub trait IdForById {
type Error;
+ #[allow(clippy::declare_interior_mutable_const)] // todo: report this
const ERROR : Self::Error;
}
type Error = OnlineError;
#[throws(OnlineError)]
fn try_from(v: f64) -> ZCoord {
- if !v.is_finite() { Err(OnlineError::InvalidZCoord)? }
+ if !v.is_finite() { throw!(OnlineError::InvalidZCoord) }
ZCoord(v)
}
}
let pr = self;
let mut defs = String::new();
let dragraise = match pr.p.thresh_dragraise(pri)? {
- Some(n) if n < 0 => Err(SE::NegativeDragraise)?,
+ Some(n) if n < 0 => throw!(SE::NegativeDragraise),
Some(n) => n,
None => -1,
};
+#![allow(clippy::let_and_return)]
use crate::imports::*;
use lazy_static::lazy_static;
impl InstanceRef {
#[throws(InstanceLockError)]
- pub fn lock<'g>(&'g self) -> InstanceGuard<'g> {
+ pub fn lock(&self) -> InstanceGuard<'_> {
let c = self.0.lock()?;
if !c.live { throw!(InstanceLockError::GameBeingDestroyed) }
InstanceGuard { c, gref: self.clone() }
impl Instance {
/// Returns `None` if a game with this name already exists
+ #[allow(clippy::new_ret_no_self)]
#[throws(MgmtError)]
pub fn new(name: InstanceName, gs: GameState) -> InstanceRef {
let name = Arc::new(name);
let out : Vec<Arc<InstanceName>> =
games.keys()
.filter(|k| scope == None || scope == Some(&k.scope))
- .map(|k| k.clone())
+ .cloned()
.collect();
out
}
}
wanted
};
+ #[allow(clippy::or_fun_call)]
let out = players.iter().map(|&player| {
let mut tokens = wanted.remove(player)
.unwrap_or(vec![] /* dupe, somehow */);
let mut first = iter::once(());
for w in input.split_ascii_whitespace() {
- if !first.next().is_some() { write!(&mut out, " ")?; }
+ if first.next().is_none() { write!(&mut out, " ")?; }
match w {
"L" | "l" | "M" | "m" |
"V" | "v" | "H" | "h" => map = ALWAYS_MAP,
continue;
}
}
- _ => Err(SE::UnknownOperator)?,
+ _ => throw!(SE::UnknownOperator),
};
write!(&mut out, "{}", w)?;
}
impl PieceSpec for Square {
#[throws(SE)]
fn load(&self) -> Box<dyn Piece> {
- let (x, y) = match self.size.as_slice() {
- &[s,] => (s,s),
- &[x, y] => (x,y),
+ let (x, y) = match *self.size.as_slice() {
+ [s,] => (s,s),
+ [x, y] => (x,y),
_ => throw!(SE::ImproperSizeSpec),
};
let path = format!("M {} {} h {} v {} h {} z",
}
}
+#[allow(clippy::type_complexity)]
pub fn xxx_make_pieces() -> Result<Vec<(Pos, Box<dyn Piece>)>,SE> {
Ok(vec![
([ 90, 80 ],
+#![allow(clippy::while_let_loop)]
+#![allow(clippy::blocks_in_if_conditions)]
use crate::imports::*;
let mut ig = self.gref.lock().map_err(|_| em("poison"))?;
let orig_wanted = orig_buf.len();
+ #[allow(clippy::useless_asref)] // todo: report this
let mut buf = orig_buf.as_mut();
if self.init_confirmation_send.next().is_some() {
self.0.index_input(input.0)
}
fn index_output(&self, inner: usize) -> Option<Self> {
- self.0.index_output(inner).map(|v| UpdateId(v))
+ self.0.index_output(inner).map(UpdateId)
}
fn zero() -> Self { UpdateId(0) }
}
let by_client = by_client.unwrap_or(
(Default::default(), ClientSequence(0))
);
- let us = estimate.map(|e| Vec::with_capacity(e)).unwrap_or(vec![]);
+ let us = estimate.map_or(vec![], Vec::with_capacity);
g.gs.gen.increment();