feat: Allow the dynamic db to be non-static

This commit is contained in:
Markus Westerlind 2020-07-22 11:36:20 +02:00
parent ce6428fbbd
commit e2ab6c8bfa
8 changed files with 103 additions and 57 deletions

View file

@ -28,7 +28,7 @@ pub trait Compiler: Interner {
/// dolor,sit,amet,
/// consectetur,adipiscing,elit
/// ```
fn all_classes(db: &dyn Compiler) -> Arc<Vec<Class>> {
fn all_classes<'d>(db: &(dyn Compiler + 'd)) -> Arc<Vec<Class>> {
let string = db.input_string();
let rows = string.split('\n');
@ -53,13 +53,13 @@ fn all_classes(db: &dyn Compiler) -> Arc<Vec<Class>> {
Arc::new(classes)
}
fn fields(db: &dyn Compiler, class: Class) -> Arc<Vec<Field>> {
fn fields<'d>(db: &(dyn Compiler + 'd), class: Class) -> Arc<Vec<Field>> {
let class = db.lookup_intern_class(class);
let fields = class.fields.clone();
Arc::new(fields)
}
fn all_fields(db: &dyn Compiler) -> Arc<Vec<Field>> {
fn all_fields<'d>(db: &(dyn Compiler + 'd)) -> Arc<Vec<Field>> {
Arc::new(
db.all_classes()
.iter()