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::*;