From 3c163eabc78ddbd26bb250ef5ad6da28cd61adc6 Mon Sep 17 00:00:00 2001 From: Sophie Forrest Date: Fri, 30 Aug 2024 23:35:45 +1200 Subject: feat: split engine into crates --- src/lib.rs | 204 ------------------------------------------------------------- 1 file changed, 204 deletions(-) delete mode 100644 src/lib.rs (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs deleted file mode 100644 index 71c5a99..0000000 --- a/src/lib.rs +++ /dev/null @@ -1,204 +0,0 @@ -#![allow(incomplete_features)] -#![feature(async_fn_in_trait)] -#![feature(custom_inner_attributes)] -#![feature(lint_reasons)] -#![feature(never_type)] -#![feature(test)] -#![deny(clippy::complexity)] -#![deny(clippy::nursery)] -#![deny(clippy::pedantic)] -#![deny(clippy::perf)] -#![deny(clippy::suspicious)] -#![deny(clippy::alloc_instead_of_core)] -#![deny(clippy::as_underscore)] -#![deny(clippy::clone_on_ref_ptr)] -#![deny(clippy::create_dir)] -#![warn(clippy::dbg_macro)] -#![deny(clippy::default_numeric_fallback)] -#![deny(clippy::default_union_representation)] -#![deny(clippy::deref_by_slicing)] -#![deny(clippy::empty_structs_with_brackets)] -#![deny(clippy::exit)] -#![deny(clippy::expect_used)] -#![deny(clippy::filetype_is_file)] -#![deny(clippy::fn_to_numeric_cast)] -#![deny(clippy::format_push_string)] -#![deny(clippy::get_unwrap)] -#![deny(clippy::if_then_some_else_none)] -#![allow( - clippy::implicit_return, - reason = "returns should be done implicitly, not explicitly" -)] -#![deny(clippy::indexing_slicing)] -#![deny(clippy::large_include_file)] -#![deny(clippy::let_underscore_must_use)] -#![deny(clippy::lossy_float_literal)] -#![deny(clippy::map_err_ignore)] -#![deny(clippy::mem_forget)] -#![deny(clippy::missing_docs_in_private_items)] -#![deny(clippy::missing_trait_methods)] -#![deny(clippy::mod_module_files)] -#![deny(clippy::multiple_inherent_impl)] -#![deny(clippy::mutex_atomic)] -#![deny(clippy::needless_return)] -#![deny(clippy::non_ascii_literal)] -#![deny(clippy::panic_in_result_fn)] -#![deny(clippy::pattern_type_mismatch)] -#![deny(clippy::rc_buffer)] -#![deny(clippy::rc_mutex)] -#![deny(clippy::rest_pat_in_fully_bound_structs)] -#![deny(clippy::same_name_method)] -#![deny(clippy::separated_literal_suffix)] -#![deny(clippy::str_to_string)] -#![deny(clippy::string_add)] -#![deny(clippy::string_slice)] -#![deny(clippy::string_to_string)] -#![allow( - clippy::tabs_in_doc_comments, - reason = "tabs are preferred for this project" -)] -#![deny(clippy::try_err)] -#![deny(clippy::undocumented_unsafe_blocks)] -#![deny(clippy::unnecessary_self_imports)] -#![deny(clippy::unneeded_field_pattern)] -#![deny(clippy::unwrap_in_result)] -#![deny(clippy::unwrap_used)] -#![warn(clippy::use_debug)] -#![deny(clippy::verbose_file_reads)] -#![deny(clippy::wildcard_dependencies)] -#![deny(clippy::wildcard_enum_match_arm)] -#![deny(missing_copy_implementations)] -#![deny(missing_debug_implementations)] -#![deny(missing_docs)] -#![deny(single_use_lifetimes)] -#![deny(unsafe_code)] -#![deny(unused)] - -//! Brainfuck RS -//! -//! Implementation of a Brainfuck interpreter written in Rust. - -#[cfg(test)] -extern crate test; - -mod engine; -pub mod executor; -pub mod lexer; -pub mod parser; -#[cfg(feature = "utilities")] -pub mod utility; - -pub use executor::{U16 as ExecutorU16, U32 as ExecutorU32, U8 as ExecutorU8}; -pub use lexer::{lex, OperatorCode}; -use miette::Diagnostic; -pub use parser::{parse, Instruction}; -use thiserror::Error; - -/// Top-level error type for Brainfuck interpreter. -#[derive(Debug, Diagnostic, Error)] -pub enum Error { - /// Error occurred when reading input from a file. - #[error(transparent)] - Io(#[from] std::io::Error), - - /// An error that occurred while parsing Brainfuck code. - #[diagnostic(transparent)] - #[error(transparent)] - Parser(#[from] parser::Error), - - /// An error that occurred during runtime. - #[error(transparent)] - Runtime(#[from] executor::Error), -} - -#[cfg(test)] -mod tests { - use test::Bencher; - - use super::*; - - #[test] - fn hello_world() -> Result<(), Error> { - let mut tape: Vec = vec![0; 1024]; - - utility::execute_from_file::("./test_programs/hello_world.bf", &mut tape)?; - - Ok(()) - } - - #[test] - fn hello_world_u16() -> Result<(), Error> { - let mut tape: Vec = vec![0; 1024]; - - utility::execute_from_file::("./test_programs/hello_world.bf", &mut tape)?; - - Ok(()) - } - - #[test] - fn hello_world_from_hell() -> Result<(), Error> { - let mut tape: Vec = vec![0; 1024]; - - utility::execute_from_file::( - "./test_programs/hello_world_from_hell.bf", - &mut tape, - )?; - - Ok(()) - } - - #[bench] - fn hello_world_from_hell_bench_u8(b: &mut Bencher) { - b.iter(|| { - let mut tape: Vec = vec![0; 1024]; - - #[allow(clippy::expect_used)] - utility::execute_from_file::( - "./test_programs/hello_world_from_hell.bf", - &mut tape, - ) - .expect("failed to run"); - }); - } - - #[bench] - fn hello_world_from_hell_bench_u16(b: &mut Bencher) { - b.iter(|| { - let mut tape: Vec = vec![0; 1024]; - - #[allow(clippy::expect_used)] - utility::execute_from_file::( - "./test_programs/hello_world_from_hell.bf", - &mut tape, - ) - .expect("failed to run"); - }); - } - - #[bench] - fn hello_world_from_hell_bench_u32(b: &mut Bencher) { - b.iter(|| { - let mut tape: Vec = vec![0; 1024]; - - #[allow(clippy::expect_used)] - utility::execute_from_file::( - "./test_programs/hello_world_from_hell.bf", - &mut tape, - ) - .expect("failed to run"); - }); - } - - #[test] - fn hello_world_short() -> Result<(), Error> { - let mut tape: Vec = vec![0; 1024]; - - utility::execute_from_str::( - "--[+++++++<---->>-->+>+>+<<<<]<.>++++[-<++++>>->--<<]>>-.>--..>+.<<<.<<-.>>+>->>.\ - +++[.<]", - &mut tape, - )?; - - Ok(()) - } -} -- cgit 1.4.1