Skip to content

Commit

Permalink
Implement variable for pointer to variable
Browse files Browse the repository at this point in the history
  • Loading branch information
tailhook committed Dec 26, 2017
1 parent c575d37 commit cfcd048
Showing 1 changed file with 56 additions and 0 deletions.
56 changes: 56 additions & 0 deletions src/box_vars.rs
Original file line number Diff line number Diff line change
Expand Up @@ -171,3 +171,59 @@ impl<'render, T: Variable<'render>> Variable<'render> for Arc<T> {
(**self).iterate_pairs()
}
}

impl<'render, T: Variable<'render>> Variable<'render> for &'render T {
fn attr<'x>(&'x self, attr: &str)
-> Result<Var<'x, 'render>, DataError>
where 'render: 'x
{
(**self).attr(attr)
}
fn index<'x>(&'x self,
key: &(Variable<'render> + 'render))
-> Result<Var<'x, 'render>, DataError>
where 'render: 'x
{
(**self).index(key)
}
fn output(&self) -> Result<Output, DataError> {
(**self).output()
}
fn typename(&self) -> &'static str {
return stringify!(#name);
}
fn as_str_key<'x>(&'x self)
-> Result<&'x str, DataError>
{
(**self).as_str_key()
}
fn as_int_key(&self) -> Result<usize, DataError> {
(**self).as_int_key()
}
fn as_bool(&self) -> Result<bool, DataError> {
(**self).as_bool()
}
fn as_number(&self) -> Result<Number, DataError> {
(**self).as_number()
}
fn as_comparable(&self) -> Result<Comparable, DataError> {
(**self).as_comparable()
}

fn iterate<'x>(&'x self)
-> Result<Box<Iterator<Item=
Var<'x, 'render>>+'x>,
DataError>
where 'render: 'x
{
(**self).iterate()
}

fn iterate_pairs<'x>(&'x self)
-> Result<Box<Iterator<Item=(Var<'x, 'render>, Var<'x, 'render>)>+'x>,
DataError>
where 'render: 'x
{
(**self).iterate_pairs()
}
}

0 comments on commit cfcd048

Please sign in to comment.