#[non_exhaustive]pub enum HandshakeError {
BadCommand,
WrongArity(usize),
BadFromKeyword,
BadGeneration,
BadOffset,
BadIdKeyword,
BadReplicaId,
}Expand description
Why HandshakeReq::parse rejected its input.
use kevy_replicate::handshake::{HandshakeError, HandshakeReq};
let argv = |w: &[&str]| kevy_resp::Argv::from(w.iter().map(|w| w.as_bytes().to_vec()).collect::<Vec<_>>());
let err = HandshakeReq::parse(&argv(&["REPLICATE", "FROM", "0", "0", "ID", ""])).unwrap_err();
assert_eq!(err, HandshakeError::BadReplicaId);
assert_eq!(err.to_string(), "replica id must be non-empty UTF-8");Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
BadCommand
First arg is not “REPLICATE” (case-insensitive).
use kevy_replicate::handshake::{HandshakeError, HandshakeReq};
let argv = |w: &[&str]| kevy_resp::Argv::from(w.iter().map(|w| w.as_bytes().to_vec()).collect::<Vec<_>>());
let err = HandshakeReq::parse(&argv(&["SYNC", "FROM", "0", "0", "ID", "r1"])).unwrap_err();
assert_eq!(err, HandshakeError::BadCommand);WrongArity(usize)
Argument count is not exactly 6.
use kevy_replicate::handshake::{HandshakeError, HandshakeReq};
let argv = |w: &[&str]| kevy_resp::Argv::from(w.iter().map(|w| w.as_bytes().to_vec()).collect::<Vec<_>>());
let err = HandshakeReq::parse(&argv(&["REPLICATE", "FROM", "0", "ID", "r1"])).unwrap_err();
assert_eq!(err, HandshakeError::WrongArity(5));BadFromKeyword
Second arg is not “FROM” (case-insensitive).
use kevy_replicate::handshake::{HandshakeError, HandshakeReq};
let argv = |w: &[&str]| kevy_resp::Argv::from(w.iter().map(|w| w.as_bytes().to_vec()).collect::<Vec<_>>());
let err = HandshakeReq::parse(&argv(&["REPLICATE", "AT", "0", "0", "ID", "r1"])).unwrap_err();
assert_eq!(err, HandshakeError::BadFromKeyword);BadGeneration
Third arg (generation) did not parse as an unsigned decimal u64.
use kevy_replicate::handshake::{HandshakeError, HandshakeReq};
let argv = |w: &[&str]| kevy_resp::Argv::from(w.iter().map(|w| w.as_bytes().to_vec()).collect::<Vec<_>>());
let err = HandshakeReq::parse(&argv(&["REPLICATE", "FROM", "g1", "0", "ID", "r1"])).unwrap_err();
assert_eq!(err, HandshakeError::BadGeneration);BadOffset
Fourth arg (offset) did not parse as an unsigned decimal u64.
use kevy_replicate::handshake::{HandshakeError, HandshakeReq};
let argv = |w: &[&str]| kevy_resp::Argv::from(w.iter().map(|w| w.as_bytes().to_vec()).collect::<Vec<_>>());
let err = HandshakeReq::parse(&argv(&["REPLICATE", "FROM", "1", "-1", "ID", "r1"])).unwrap_err();
assert_eq!(err, HandshakeError::BadOffset);BadIdKeyword
Fifth arg is not “ID” (case-insensitive).
use kevy_replicate::handshake::{HandshakeError, HandshakeReq};
let argv = |w: &[&str]| kevy_resp::Argv::from(w.iter().map(|w| w.as_bytes().to_vec()).collect::<Vec<_>>());
let err = HandshakeReq::parse(&argv(&["REPLICATE", "FROM", "0", "0", "NAME", "r1"])).unwrap_err();
assert_eq!(err, HandshakeError::BadIdKeyword);BadReplicaId
Replica id is empty or not valid UTF-8.
use kevy_replicate::handshake::{HandshakeError, HandshakeReq};
let argv = |w: &[&str]| kevy_resp::Argv::from(w.iter().map(|w| w.as_bytes().to_vec()).collect::<Vec<_>>());
let err = HandshakeReq::parse(&argv(&["REPLICATE", "FROM", "0", "0", "ID", ""])).unwrap_err();
assert_eq!(err, HandshakeError::BadReplicaId);Trait Implementations§
Source§impl Clone for HandshakeError
impl Clone for HandshakeError
impl Copy for HandshakeError
Source§impl Debug for HandshakeError
impl Debug for HandshakeError
Source§impl Display for HandshakeError
impl Display for HandshakeError
impl Eq for HandshakeError
Source§impl Error for HandshakeError
impl Error for HandshakeError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0:
use the Display impl or to_string()
Source§impl Hash for HandshakeError
impl Hash for HandshakeError
Source§impl PartialEq for HandshakeError
impl PartialEq for HandshakeError
impl StructuralPartialEq for HandshakeError
Auto Trait Implementations§
impl Freeze for HandshakeError
impl RefUnwindSafe for HandshakeError
impl Send for HandshakeError
impl Sync for HandshakeError
impl Unpin for HandshakeError
impl UnsafeUnpin for HandshakeError
impl UnwindSafe for HandshakeError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more