pub struct ValidOrNullMove(/* private fields */);Implementations§
Source§impl ValidOrNullMove
impl ValidOrNullMove
pub const NullMove: Self
pub const unsafe fn new_unchecked( source: Square, dest: Square, promotion: Option<PieceType>, ) -> Self
pub fn new( source: Square, dest: Square, promotion: Option<PieceType>, ) -> Result<Self>
pub const fn into_inner(&self) -> Option<&Move>
pub const fn into_inner_mut(&mut self) -> Option<&mut Move>
pub const fn is_null(&self) -> bool
pub fn get_source(&self) -> Option<Square>
pub fn get_dest(&self) -> Option<Square>
pub fn get_promotion(&self) -> Option<PieceType>
pub fn from_san(position: &ChessPosition, san: &str) -> Result<Self>
pub fn from_lan(position: &ChessPosition, lan: &str) -> Result<Self>
pub fn algebraic_without_suffix( self, position: &ChessPosition, long: bool, ) -> Result<Cow<'static, str>>
pub fn algebraic_and_new_position( self, position: &ChessPosition, long: bool, ) -> Result<(Cow<'static, str>, ChessPosition)>
Methods from Deref<Target = Option<Move>>§
1.0.0pub fn as_ref(&self) -> Option<&T>
pub fn as_ref(&self) -> Option<&T>
Converts from &Option<T> to Option<&T>.
§Examples
Calculates the length of an Option<String> as an Option<usize>
without moving the String. The map method takes the self argument by value,
consuming the original, so this technique uses as_ref to first take an Option to a
reference to the value inside the original.
let text: Option<String> = Some("Hello, world!".to_string());
// First, cast `Option<String>` to `Option<&String>` with `as_ref`,
// then consume *that* with `map`, leaving `text` on the stack.
let text_length: Option<usize> = text.as_ref().map(|s| s.len());
println!("still can print text: {text:?}");1.0.0pub fn as_mut(&mut self) -> Option<&mut T>
pub fn as_mut(&mut self) -> Option<&mut T>
Converts from &mut Option<T> to Option<&mut T>.
§Examples
let mut x = Some(2);
match x.as_mut() {
Some(v) => *v = 42,
None => {},
}
assert_eq!(x, Some(42));1.75.0pub fn as_slice(&self) -> &[T]
pub fn as_slice(&self) -> &[T]
Returns a slice of the contained value, if any. If this is None, an
empty slice is returned. This can be useful to have a single type of
iterator over an Option or slice.
Note: Should you have an Option<&T> and wish to get a slice of T,
you can unpack it via opt.map_or(&[], std::slice::from_ref).
§Examples
assert_eq!(
[Some(1234).as_slice(), None.as_slice()],
[&[1234][..], &[][..]],
);The inverse of this function is (discounting
borrowing) [_]::first:
for i in [Some(1234_u16), None] {
assert_eq!(i.as_ref(), i.as_slice().first());
}1.75.0pub fn as_mut_slice(&mut self) -> &mut [T]
pub fn as_mut_slice(&mut self) -> &mut [T]
Returns a mutable slice of the contained value, if any. If this is
None, an empty slice is returned. This can be useful to have a
single type of iterator over an Option or slice.
Note: Should you have an Option<&mut T> instead of a
&mut Option<T>, which this method takes, you can obtain a mutable
slice via opt.map_or(&mut [], std::slice::from_mut).
§Examples
assert_eq!(
[Some(1234).as_mut_slice(), None.as_mut_slice()],
[&mut [1234][..], &mut [][..]],
);The result is a mutable slice of zero or one items that points into
our original Option:
let mut x = Some(1234);
x.as_mut_slice()[0] += 1;
assert_eq!(x, Some(1235));The inverse of this method (discounting borrowing)
is [_]::first_mut:
assert_eq!(Some(123).as_mut_slice().first_mut(), Some(&mut 123))1.40.0pub fn as_deref(&self) -> Option<&<T as Deref>::Target>where
T: Deref,
pub fn as_deref(&self) -> Option<&<T as Deref>::Target>where
T: Deref,
Converts from Option<T> (or &Option<T>) to Option<&T::Target>.
Leaves the original Option in-place, creating a new one with a reference
to the original one, additionally coercing the contents via Deref.
§Examples
let x: Option<String> = Some("hey".to_owned());
assert_eq!(x.as_deref(), Some("hey"));
let x: Option<String> = None;
assert_eq!(x.as_deref(), None);1.40.0pub fn as_deref_mut(&mut self) -> Option<&mut <T as Deref>::Target>where
T: DerefMut,
pub fn as_deref_mut(&mut self) -> Option<&mut <T as Deref>::Target>where
T: DerefMut,
Converts from Option<T> (or &mut Option<T>) to Option<&mut T::Target>.
Leaves the original Option in-place, creating a new one containing a mutable reference to
the inner type’s Deref::Target type.
§Examples
let mut x: Option<String> = Some("hey".to_owned());
assert_eq!(x.as_deref_mut().map(|x| {
x.make_ascii_uppercase();
x
}), Some("HEY".to_owned().as_mut_str()));1.0.0pub fn iter(&self) -> Iter<'_, T> ⓘ
pub fn iter(&self) -> Iter<'_, T> ⓘ
Returns an iterator over the possibly contained value.
§Examples
let x = Some(4);
assert_eq!(x.iter().next(), Some(&4));
let x: Option<u32> = None;
assert_eq!(x.iter().next(), None);1.0.0pub fn iter_mut(&mut self) -> IterMut<'_, T> ⓘ
pub fn iter_mut(&mut self) -> IterMut<'_, T> ⓘ
Returns a mutable iterator over the possibly contained value.
§Examples
let mut x = Some(4);
match x.iter_mut().next() {
Some(v) => *v = 42,
None => {},
}
assert_eq!(x, Some(42));
let mut x: Option<u32> = None;
assert_eq!(x.iter_mut().next(), None);1.53.0pub fn insert(&mut self, value: T) -> &mut T
pub fn insert(&mut self, value: T) -> &mut T
Inserts value into the option, then returns a mutable reference to it.
If the option already contains a value, the old value is dropped.
See also Option::get_or_insert, which doesn’t update the value if
the option already contains Some.
§Example
let mut opt = None;
let val = opt.insert(1);
assert_eq!(*val, 1);
assert_eq!(opt.unwrap(), 1);
let val = opt.insert(2);
assert_eq!(*val, 2);
*val = 3;
assert_eq!(opt.unwrap(), 3);1.20.0pub fn get_or_insert(&mut self, value: T) -> &mut T
pub fn get_or_insert(&mut self, value: T) -> &mut T
Inserts value into the option if it is None, then
returns a mutable reference to the contained value.
See also Option::insert, which updates the value even if
the option already contains Some.
§Examples
let mut x = None;
{
let y: &mut u32 = x.get_or_insert(5);
assert_eq!(y, &5);
*y = 7;
}
assert_eq!(x, Some(7));1.83.0pub fn get_or_insert_default(&mut self) -> &mut Twhere
T: Default,
pub fn get_or_insert_default(&mut self) -> &mut Twhere
T: Default,
1.20.0pub fn get_or_insert_with<F>(&mut self, f: F) -> &mut Twhere
F: FnOnce() -> T,
pub fn get_or_insert_with<F>(&mut self, f: F) -> &mut Twhere
F: FnOnce() -> T,
1.80.0pub fn take_if<P>(&mut self, predicate: P) -> Option<T>
pub fn take_if<P>(&mut self, predicate: P) -> Option<T>
Takes the value out of the option, but only if the predicate evaluates to
true on a mutable reference to the value.
In other words, replaces self with None if the predicate returns true.
This method operates similar to Option::take but conditional.
§Examples
let mut x = Some(42);
let prev = x.take_if(|v| if *v == 42 {
*v += 1;
false
} else {
false
});
assert_eq!(x, Some(43));
assert_eq!(prev, None);
let prev = x.take_if(|v| *v == 43);
assert_eq!(x, None);
assert_eq!(prev, Some(43));1.31.0pub fn replace(&mut self, value: T) -> Option<T>
pub fn replace(&mut self, value: T) -> Option<T>
Replaces the actual value in the option by the value given in parameter,
returning the old value if present,
leaving a Some in its place without deinitializing either one.
§Examples
let mut x = Some(2);
let old = x.replace(5);
assert_eq!(x, Some(5));
assert_eq!(old, Some(2));
let mut x = None;
let old = x.replace(3);
assert_eq!(x, Some(3));
assert_eq!(old, None);Trait Implementations§
Source§impl BoardMethodOverload<ValidOrNullMove> for Board
impl BoardMethodOverload<ValidOrNullMove> for Board
unsafe fn push_unchecked(&mut self, valid_or_null_move: ValidOrNullMove)
fn push(&mut self, valid_or_null_move: ValidOrNullMove) -> Result<()>
fn gives_repetition(&self, valid_or_null_move: ValidOrNullMove) -> bool
fn gives_threefold_repetition( &self, valid_or_null_move: ValidOrNullMove, ) -> bool
fn gives_claimable_threefold_repetition( &self, valid_or_null_move: ValidOrNullMove, ) -> bool
Source§impl BoardPositionMethodOverload<ValidOrNullMove> for ChessPosition
impl BoardPositionMethodOverload<ValidOrNullMove> for ChessPosition
fn parse_san(&self, san: &str) -> Result<ValidOrNullMove>
fn parse_lan(&self, lan: &str) -> Result<ValidOrNullMove>
fn parse_uci(&self, uci: &str) -> Result<ValidOrNullMove>
fn make_move_new(&self, valid_or_null_move: ValidOrNullMove) -> Self
fn make_move(&mut self, valid_or_null_move: T)where
Self: Sized,
Source§impl Clone for ValidOrNullMove
impl Clone for ValidOrNullMove
Source§fn clone(&self) -> ValidOrNullMove
fn clone(&self) -> ValidOrNullMove
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Compress for ValidOrNullMove
impl Compress for ValidOrNullMove
type CompressedItem = u16
fn compress(self) -> Self::CompressedItem
Source§impl Debug for ValidOrNullMove
impl Debug for ValidOrNullMove
Source§impl Decompress<ValidOrNullMove> for u16
impl Decompress<ValidOrNullMove> for u16
fn decompress(self) -> Result<ValidOrNullMove>
Source§impl Default for ValidOrNullMove
impl Default for ValidOrNullMove
Source§impl Deref for ValidOrNullMove
impl Deref for ValidOrNullMove
Source§impl DerefMut for ValidOrNullMove
impl DerefMut for ValidOrNullMove
Source§impl<'de> Deserialize<'de> for ValidOrNullMove
impl<'de> Deserialize<'de> for ValidOrNullMove
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for ValidOrNullMove
impl Display for ValidOrNullMove
Source§impl From<&Move> for ValidOrNullMove
impl From<&Move> for ValidOrNullMove
Source§impl From<Move> for ValidOrNullMove
impl From<Move> for ValidOrNullMove
Source§impl<'source> FromPyObject<'source> for ValidOrNullMove
Available on crate feature pyo3 only.
impl<'source> FromPyObject<'source> for ValidOrNullMove
pyo3 only.Source§impl FromStr for ValidOrNullMove
impl FromStr for ValidOrNullMove
Source§impl Hash for ValidOrNullMove
impl Hash for ValidOrNullMove
Source§impl PartialEq for ValidOrNullMove
impl PartialEq for ValidOrNullMove
Source§impl<P: PositionEvaluation> SearcherMethodOverload<ValidOrNullMove> for Searcher<P>
impl<P: PositionEvaluation> SearcherMethodOverload<ValidOrNullMove> for Searcher<P>
unsafe fn push_unchecked(&mut self, valid_or_null_move: ValidOrNullMove)
Source§impl Serialize for ValidOrNullMove
impl Serialize for ValidOrNullMove
impl Copy for ValidOrNullMove
impl Eq for ValidOrNullMove
impl StructuralPartialEq for ValidOrNullMove
Auto Trait Implementations§
impl Freeze for ValidOrNullMove
impl RefUnwindSafe for ValidOrNullMove
impl Send for ValidOrNullMove
impl Sync for ValidOrNullMove
impl Unpin for ValidOrNullMove
impl UnwindSafe for ValidOrNullMove
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)Source§impl<T> CustomColorize for Twhere
T: ToString,
impl<T> CustomColorize for Twhere
T: ToString,
fn colorize( &self, style_functions: &[fn(ColoredString) -> ColoredString], ) -> String
Source§impl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
impl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
Source§impl<T> FromQuery for Twhere
T: DeserializeOwned,
impl<T> FromQuery for Twhere
T: DeserializeOwned,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more