terrified to start testing
This commit is contained in:
@@ -1,18 +1,14 @@
|
||||
use std::cell::OnceCell;
|
||||
use std::rc::Rc;
|
||||
|
||||
use futures::future::join_all;
|
||||
use orchid_api_derive::{Coding, Hierarchy};
|
||||
use orchid_base::{Receipt, ReqHandle, ReqHandleExt, Sym, es, sym};
|
||||
use orchid_extension::{AtomOps, AtomicFeatures};
|
||||
use orchid_extension::conv::ToExpr;
|
||||
use orchid_extension::expr::Expr;
|
||||
use orchid_extension::gen_expr::new_atom;
|
||||
use orchid_extension::lexer::LexerObj;
|
||||
use orchid_extension::parser::ParserObj;
|
||||
use orchid_extension::system::{System, SystemCard};
|
||||
use orchid_extension::system_ctor::SystemCtor;
|
||||
use orchid_extension::ParserObj;
|
||||
use orchid_extension::tree::{GenMember, merge_trivial};
|
||||
use orchid_extension::{
|
||||
AtomOps, AtomicFeatures, Expr, LexerObj, ReqForSystem, System, SystemCard, SystemCtor, ToExpr,
|
||||
};
|
||||
|
||||
use super::number::num_lib::gen_num_lib;
|
||||
use super::string::str_atom::{IntStrAtom, StrAtom};
|
||||
@@ -20,7 +16,6 @@ use super::string::str_lib::gen_str_lib;
|
||||
use crate::std::binary::binary_atom::BlobAtom;
|
||||
use crate::std::binary::binary_lib::gen_binary_lib;
|
||||
use crate::std::boolean::gen_bool_lib;
|
||||
use crate::std::future::future_lib::{FutureReq, Scheduler, gen_future_lib};
|
||||
use crate::std::number::num_atom::{CreateFloat, CreateInt};
|
||||
use crate::std::number::num_lexer::NumLexer;
|
||||
use crate::std::ops::gen_ops_lib;
|
||||
@@ -49,19 +44,17 @@ pub enum StdReq {
|
||||
CreateTuple(CreateTuple),
|
||||
CreateRecord(CreateRecord),
|
||||
CreateSymAtom(CreateSymAtom),
|
||||
FutureReq(FutureReq),
|
||||
}
|
||||
|
||||
#[derive(Debug, Default)]
|
||||
pub struct StdSystem {
|
||||
pub(crate) sched: OnceCell<Scheduler>,
|
||||
}
|
||||
pub struct StdSystem;
|
||||
impl SystemCtor for StdSystem {
|
||||
type Deps = ();
|
||||
type Card = Self;
|
||||
type Instance = Self;
|
||||
const NAME: &'static str = "orchid::std";
|
||||
const VERSION: f64 = 0.00_01;
|
||||
fn inst(&self, _: ()) -> Self::Instance { Self::default() }
|
||||
fn inst(&self, _: ()) -> Self::Instance { Self }
|
||||
}
|
||||
impl SystemCard for StdSystem {
|
||||
type Ctor = Self;
|
||||
@@ -83,16 +76,13 @@ impl SystemCard for StdSystem {
|
||||
}
|
||||
}
|
||||
impl System for StdSystem {
|
||||
async fn request<'a>(&self, xreq: Box<dyn ReqHandle<'a> + 'a>, req: Self::Req) -> Receipt<'a> {
|
||||
type Ctor = Self;
|
||||
async fn request<'a>(
|
||||
&self,
|
||||
xreq: Box<dyn ReqHandle<'a> + 'a>,
|
||||
req: ReqForSystem<Self>,
|
||||
) -> Receipt<'a> {
|
||||
match req {
|
||||
StdReq::FutureReq(req) => {
|
||||
let sched = self.sched.get_or_init(Scheduler::default);
|
||||
match req {
|
||||
FutureReq::AddAsyncWork(req) => xreq.reply(&req, &sched.add(&req).await).await.unwrap(),
|
||||
FutureReq::FinishAsyncWork(req) =>
|
||||
xreq.reply(&req, &sched.finish(&req).await).await.unwrap(),
|
||||
}
|
||||
},
|
||||
StdReq::CreateInt(ref req @ CreateInt(int)) =>
|
||||
xreq.reply(req, &new_atom(int).to_expr().await.serialize().await).await.unwrap(),
|
||||
StdReq::CreateFloat(ref req @ CreateFloat(float)) =>
|
||||
@@ -151,7 +141,6 @@ impl System for StdSystem {
|
||||
gen_binary_lib(),
|
||||
gen_stream_lib(),
|
||||
gen_time_lib(),
|
||||
gen_future_lib(),
|
||||
])
|
||||
}
|
||||
async fn prelude(&self) -> Vec<Sym> {
|
||||
|
||||
Reference in New Issue
Block a user