eschac 0.6.2

computing chess moves
Documentation
#[allow(dead_code)]
mod bitboard;
#[allow(dead_code)]
mod board;
#[allow(dead_code)]
mod util;

mod magic;

extern crate alloc;

use bitboard::*;
use magic::*;

use std::fs::File;
use std::io::Write;

fn main() -> Result<(), Box<dyn std::error::Error>> {
	println!("cargo:rerun-if-changed=src");
	let out_dir = std::env::var("OUT_DIR")?;
	let (magics, table) = magic::build();

	let mut f = File::create(format!("{out_dir}/magics.rs"))?;
	writeln!(&mut f, "[")?;
	for Magic {
		premask: Bitboard(premask),
		factor,
		offset,
	} in magics
	{
		writeln!(
			&mut f,
			"Magic {{ premask: Bitboard({premask}), factor: {factor}, offset: {offset} }},"
		)?;
	}
	writeln!(&mut f, "]")?;

	let mut f = File::create(format!("{out_dir}/table.rs"))?;
	writeln!(&mut f, "[")?;
	for value in table {
		writeln!(&mut f, "{value},")?;
	}
	writeln!(&mut f, "]")?;

	Ok(())
}