timecat/
lib.rs

1#![doc = include_str!("../README.md")]
2#![allow(unused_imports)]
3#![allow(dead_code)]
4#![allow(clippy::macro_metavars_in_unsafe)]
5#![allow(clippy::result_large_err)]
6#![expect(clippy::needless_doctest_main)]
7#![expect(clippy::too_many_arguments)]
8// #![deny(missing_debug_implementations)]
9// #![warn(missing_docs)]
10
11pub mod board;
12pub mod chess;
13pub mod constants;
14pub mod custom_engine;
15pub mod error;
16pub mod evaluate;
17#[cfg(feature = "nnue_reader")]
18pub mod nnue;
19pub mod parse;
20pub mod polyglot;
21pub mod runner;
22pub mod search;
23pub mod search_controller;
24pub mod selfplay;
25pub mod sorter;
26#[cfg(feature = "experimental")]
27pub mod syzygy;
28#[cfg(feature = "debug")]
29pub mod tests;
30pub mod tt;
31pub mod uci;
32pub mod useful_macros;
33pub mod utils;
34
35pub mod prelude {
36    use super::*;
37    pub use super::{
38        A1, A2, A3, A4, A5, A6, A7, A8, ALL_FILES, ALL_PIECE_TYPES, ALL_PIECES, ALL_RANKS,
39        ALL_SQUARES, B1, B2, B3, B4, B5, B6, B7, B8, BB_A1, BB_A2, BB_A3, BB_A4, BB_A5, BB_A6,
40        BB_A7, BB_A8, BB_B1, BB_B2, BB_B3, BB_B4, BB_B5, BB_B6, BB_B7, BB_B8, BB_BACKRANKS, BB_C1,
41        BB_C2, BB_C3, BB_C4, BB_C5, BB_C6, BB_C7, BB_C8, BB_CENTER, BB_CORNERS, BB_D1, BB_D2,
42        BB_D3, BB_D4, BB_D5, BB_D6, BB_D7, BB_D8, BB_DARK_SQUARES, BB_E1, BB_E2, BB_E3, BB_E4,
43        BB_E5, BB_E6, BB_E7, BB_E8, BB_EDGES, BB_F1, BB_F2, BB_F3, BB_F4, BB_F5, BB_F6, BB_F7,
44        BB_F8, BB_FILE_A, BB_FILE_B, BB_FILE_C, BB_FILE_D, BB_FILE_E, BB_FILE_F, BB_FILE_G,
45        BB_FILE_H, BB_G1, BB_G2, BB_G3, BB_G4, BB_G5, BB_G6, BB_G7, BB_G8, BB_H1, BB_H2, BB_H3,
46        BB_H4, BB_H5, BB_H6, BB_H7, BB_H8, BB_LEFT_HALF_BOARD, BB_LIGHT_SQUARES,
47        BB_LOWER_HALF_BOARD, BB_RANK_1, BB_RANK_2, BB_RANK_3, BB_RANK_4, BB_RANK_5, BB_RANK_6,
48        BB_RANK_7, BB_RANK_8, BB_RIGHT_HALF_BOARD, BB_SQUARES, BB_UPPER_HALF_BOARD, Bishop,
49        BitBoard, Black, BlackBishop, BlackKing, BlackKnight, BlackPawn, BlackQueen, BlackRook,
50        Board, BoardStatus, C1, C2, C3, C4, C5, C6, C7, C8, CHECKMATE_SCORE, CHECKMATE_THRESHOLD,
51        CacheTable, CacheTableSize, CastleMoveType, CastleRights, ChessPosition,
52        ChessPositionBuilder, Color, D1, D2, D3, D4, D5, D6, D7, D8, Depth, E1, E2, E3, E4, E5, E6,
53        E7, E8, EMPTY_POSITION_FEN, ENGINE_AUTHOR, ENGINE_NAME, ENGINE_VERSION, Engine, Evaluator,
54        F1, F2, F3, F4, F5, F6, F7, F8, File, G1, G2, G3, G4, G5, G6, G7, G8, GameResult,
55        GoCommand, H1, H2, H3, H4, H5, H6, H7, H8, INFINITY, IoReader, King, Knight, Move,
56        MoveWeight, PAWN_VALUE, PROMOTION_PIECES, Pawn, Piece, PieceType, Ply, Queen, Rank,
57        RepetitionTable, Rook, STARTING_POSITION_FEN, Score, SearchConfig, SearchInfo,
58        SearchInfoBuilder, Square, TimecatError, TranspositionTable, ValidOrNullMove, WeightedMove,
59        White, WhiteBishop, WhiteKing, WhiteKnight, WhitePawn, WhiteQueen, WhiteRook, Zobrist,
60        get_bishop_moves, get_castle_moves, get_pv_as_san, get_pv_as_uci, get_pv_string,
61        get_queen_moves, get_rook_moves, is_checkmate, self_play, simplify_fen,
62    };
63
64    pub use utils::extension_traits::*;
65}
66
67pub use arrayvec::ArrayVec;
68#[cfg(feature = "binread")]
69pub use binread::{BinRead, BinResult};
70pub use board::*;
71pub use chess::*;
72pub use constants::atomic::*;
73pub use constants::binary::*;
74pub use constants::bitboard_and_square::*;
75pub use constants::board::*;
76pub use constants::cache_table::*;
77pub use constants::color::*;
78pub use constants::default_parameters::*;
79pub use constants::description::*;
80pub use constants::engine::*;
81pub use constants::evaluate::*;
82pub use constants::fen::*;
83pub use constants::files::*;
84pub use constants::io::*;
85pub use constants::piece::*;
86pub use constants::ranks::*;
87pub use constants::strings::*;
88pub use constants::types::*;
89pub use custom_engine::*;
90pub use error::*;
91pub use evaluate::*;
92pub use itertools::*;
93#[cfg(feature = "nnue_reader")]
94pub use nnue::*;
95pub use parse::*;
96pub use paste::paste;
97pub use polyglot::*;
98#[cfg(feature = "pyo3")]
99pub use pyo3::prelude::*;
100pub use runner::*;
101pub use search::*;
102pub use search_controller::SearchController;
103pub use selfplay::self_play;
104#[cfg(feature = "serde")]
105pub use serde::{Deserialize, Deserializer, Serialize, Serializer};
106pub use sorter::*;
107pub use std::cmp::{Ordering, Reverse};
108pub use std::collections::HashSet;
109pub use std::convert::{From, Infallible};
110pub use std::env;
111pub use std::error::Error;
112pub use std::fmt::{self, Debug};
113pub use std::fs;
114pub use std::hash::{Hash, Hasher};
115pub use std::io::{BufReader, Read, Seek, Write};
116pub use std::iter::Sum;
117pub use std::num::{NonZeroU64, NonZeroUsize, ParseIntError, Wrapping};
118pub use std::ops::{
119    Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, Deref,
120    DerefMut, Div, DivAssign, Index, IndexMut, Mul, MulAssign, Neg, Not, Range, Rem, RemAssign,
121    Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign,
122};
123pub use std::path::{Path, PathBuf};
124pub use std::str::{FromStr, ParseBoolError};
125pub use std::sync::atomic::{AtomicBool, AtomicUsize};
126pub use std::sync::{Arc, LazyLock, RwLock};
127pub use std::thread;
128#[cfg(not(feature = "wasm"))]
129pub use std::time::{Duration, Instant};
130#[cfg(feature = "debug")]
131pub use tests::test;
132pub use tt::*;
133pub use uci::*;
134pub use utils::*;
135#[cfg(feature = "wasm")]
136pub use web_time::{Duration, Instant};
137
138// pub use std::hint;
139// pub use std::num;
140
141pub static GLOBAL_TIMECAT_STATE: GlobalTimecatState = GlobalTimecatState::new();