microrm 0.6.3

Lightweight ORM using sqlite as a backend
Documentation
use crate::schema::{
    datum::{Datum, DatumDiscriminator},
    entity::{Entity, EntityVisitor},
    relation::Relation,
};

use super::EntityPart;

pub fn is_relation<EP: EntityPart>() -> bool {
    struct Checker(bool);
    impl DatumDiscriminator for Checker {
        fn visit_entity_id<E: Entity>(&mut self) {}
        fn visit_serialized<T: serde::Serialize + serde::de::DeserializeOwned>(&mut self) {}
        fn visit_bare_field<T: Datum>(&mut self) {}
        fn visit_relation_map<E: Entity>(&mut self) {
            self.0 = true;
        }
        fn visit_relation_range<R: Relation>(&mut self) {
            self.0 = true;
        }
        fn visit_relation_domain<R: Relation>(&mut self) {
            self.0 = true;
        }
    }
    impl EntityVisitor for Checker {
        fn visit<E: Entity>(&mut self) {
            self.0 = true;
        }
    }
    let mut checker = Checker(false);
    <EP::Datum as Datum>::accept_discriminator(&mut checker);
    checker.0
}