shakmaty_uci/
lib.rs

1//! A library to parse and write Universal Chess Interface (UCI) message.
2//!
3//! # Examples
4//!
5//! Ask the engine to evaluate a position:
6//!
7//! ```
8//! use shakmaty_uci::UciMessage;
9//!
10//! println!("{}", UciMessage::Uci); // uci
11//! assert_eq!("uciok".parse(), Ok(UciMessage::UciOk));
12//! println!(
13//!     "{}",
14//!     UciMessage::Position{
15//!         startpos: true,
16//!         fen: None,
17//!         moves: vec![
18//!             "e2e4".parse().unwrap(),
19//!             "e7e5".parse().unwrap(),
20//!             "g8f3".parse().unwrap(),
21//!         ],
22//!     }
23//! );
24//! println!("{}", UciMessage::go_infinite())
25//! ```
26//!
27
28#![no_std]
29#![forbid(unsafe_code)]
30#![deny(rust_2018_idioms, nonstandard_style)]
31#![warn(future_incompatible)]
32#![warn(missing_debug_implementations)]
33#![cfg_attr(docsrs, feature(doc_auto_cfg))]
34
35#[macro_use]
36extern crate alloc;
37
38#[cfg(feature = "std")]
39extern crate std;
40
41#[allow(unused_imports)]
42#[doc(no_inline)]
43pub use shakmaty::uci::{IllegalUciMoveError, ParseUciMoveError, UciMove};
44
45mod message;
46mod parser;
47
48#[cfg(test)]
49mod tests;
50
51pub use message::*;