pub use std::iter::repeat_with;
pub use std::collections::VecDeque;
pub use std::num::Wrapping;
-pub use std::cmp;
+pub use std::cmp::{self,min,max};
pub use std::error::Error;
pub use std::marker::PhantomData;
pub use std::ops::{Deref,DerefMut};
pub type Pos = [Coord; 2];
-#[derive(Clone,Debug,Eq,PartialEq,Ord,PartialOrd,Hash,Serialize,Deserialize)]
+#[derive(Clone,Eq,PartialEq,Ord,PartialOrd,Hash,Serialize,Deserialize)]
#[serde(transparent)]
pub struct RawToken (pub String);
use crate::imports::*;
type Insn = crate::commands::MgmtGameInstruction;
+ impl Debug for RawToken {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ let s = &self.0;
+ let len = min(5, s.len() / 2);
+ write!(f, "{:?}...", &s[0..len])
+ }
+ }
+
#[typetag::serde(tag="access")]
pub trait PlayerAccessSpec : Debug {
fn token_mgi(&self, _player: PlayerId) -> Option<MgmtGameInstruction> {