Skip to main content

MarkerScopeValidFor

Trait MarkerScopeValidFor 

Source
pub trait MarkerScopeValidFor<Proof> { }
Expand description

Marker validation for a specific scope-satisfaction proof.

use drizzle_core::{Cons, Nil, Scoped, SelectAs, SelectRequiredTables};
use drizzle_core::row::{MarkerScopeValidFor, ScopeHere};

struct Users;
struct Model;

impl SelectRequiredTables for Model {
    type RequiredTables = Cons<Users, Nil>;
}

type Good = Scoped<SelectAs<Model>, Cons<Users, Nil>>;

fn needs_valid<M: MarkerScopeValidFor<(ScopeHere, ())>>() {}

fn main() {
    needs_valid::<Good>();
}
use drizzle_core::{Cons, Nil, Scoped, SelectAs, SelectRequiredTables};
use drizzle_core::row::{MarkerScopeValidFor, ScopeHere};

struct Users;
struct Posts;
struct Model;

impl SelectRequiredTables for Model {
    type RequiredTables = Cons<Users, Nil>;
}

type Bad = Scoped<SelectAs<Model>, Cons<Posts, Nil>>;

fn needs_valid<M: MarkerScopeValidFor<(ScopeHere, ())>>() {}

fn main() {
    needs_valid::<Bad>();
}

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<M, Scope, Proof> MarkerScopeValidFor<Proof> for Scoped<M, Scope>