[][src]Trait glsp::ToVal

pub trait ToVal {
    fn to_val(&self) -> Result<Val, GError>;
}

A type which can be converted to a GameLisp value.

Many functions in the glsp crate receive a generic parameter T: ToVal. This enables those functions to accept many different Rust types, which will be silently converted to a Val.

glsp::set_global("numbers", (0, 1, 2, 3, 4))?;
arr.push("text")?;

Implementing the ToVal trait for your own types will enable them to take advantage of automatic conversions for RFn return values.

struct Rgb(u8, u8, u8);

impl ToVal for Rgb {
	fn to_val(&self) -> GResult<Val> {
		let Rgb(r, g, b) = self;
		arr![r, g, b].to_val()
	}
}

fn light_sea_green() -> Rgb {
	Rgb(32, 178, 170)
}

glsp::bind_rfn("light-sea-green", rfn!(light_sea_green))?;

Invoking a type's to_val method is usually the most convenient way to produce a Val. ToVal is part of the prelude, so there's no need to import it into scope.

let thousand = 10.0_f64.pow(3.0).to_val()?;

Required methods

fn to_val(&self) -> Result<Val, GError>

Loading content...

Implementations on Foreign Types

impl<T> ToVal for [T; 3] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 18] where
    &'a T: for<'a> ToVal
[src]

impl<A, B, C> ToVal for (A, B, C) where
    &'a A: for<'a> ToVal,
    &'a B: for<'a> ToVal,
    &'a C: for<'a> ToVal
[src]

impl ToVal for PathBuf[src]

impl ToVal for i8[src]

impl<'a, T> ToVal for &'a [T] where
    T: ToVal
[src]

impl<T> ToVal for [T; 10] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 2] where
    &'a T: for<'a> ToVal
[src]

impl<A, B, C, D, E, F> ToVal for (A, B, C, D, E, F) where
    &'a A: for<'a> ToVal,
    &'a B: for<'a> ToVal,
    &'a C: for<'a> ToVal,
    &'a D: for<'a> ToVal,
    &'a E: for<'a> ToVal,
    &'a F: for<'a> ToVal
[src]

impl<T> ToVal for [T; 31] where
    &'a T: for<'a> ToVal
[src]

impl ToVal for u8[src]

impl<T> ToVal for [T; 11] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 21] where
    &'a T: for<'a> ToVal
[src]

impl<A, B, C, D, E, F, G, H, I, J> ToVal for (A, B, C, D, E, F, G, H, I, J) where
    &'a A: for<'a> ToVal,
    &'a B: for<'a> ToVal,
    &'a C: for<'a> ToVal,
    &'a D: for<'a> ToVal,
    &'a E: for<'a> ToVal,
    &'a F: for<'a> ToVal,
    &'a G: for<'a> ToVal,
    &'a H: for<'a> ToVal,
    &'a I: for<'a> ToVal,
    &'a J: for<'a> ToVal
[src]

impl ToVal for u128[src]

impl<A> ToVal for (A,) where
    &'a A: for<'a> ToVal
[src]

impl<A, B> ToVal for (A, B) where
    &'a A: for<'a> ToVal,
    &'a B: for<'a> ToVal
[src]

impl<A, B, C, D, E> ToVal for (A, B, C, D, E) where
    &'a A: for<'a> ToVal,
    &'a B: for<'a> ToVal,
    &'a C: for<'a> ToVal,
    &'a D: for<'a> ToVal,
    &'a E: for<'a> ToVal
[src]

impl<T> ToVal for [T; 23] where
    &'a T: for<'a> ToVal
[src]

impl<A, B, C, D> ToVal for (A, B, C, D) where
    &'a A: for<'a> ToVal,
    &'a B: for<'a> ToVal,
    &'a C: for<'a> ToVal,
    &'a D: for<'a> ToVal
[src]

impl<K, V> ToVal for BTreeMap<K, V> where
    K: ToVal,
    V: ToVal
[src]

impl ToVal for i16[src]

impl<T> ToVal for [T; 16] where
    &'a T: for<'a> ToVal
[src]

impl<A, B, C, D, E, F, G> ToVal for (A, B, C, D, E, F, G) where
    &'a A: for<'a> ToVal,
    &'a B: for<'a> ToVal,
    &'a C: for<'a> ToVal,
    &'a D: for<'a> ToVal,
    &'a E: for<'a> ToVal,
    &'a F: for<'a> ToVal,
    &'a G: for<'a> ToVal
[src]

impl<T> ToVal for [T; 19] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 20] where
    &'a T: for<'a> ToVal
[src]

impl<A, B, C, D, E, F, G, H, I, J, K> ToVal for (A, B, C, D, E, F, G, H, I, J, K) where
    &'a A: for<'a> ToVal,
    &'a B: for<'a> ToVal,
    &'a C: for<'a> ToVal,
    &'a D: for<'a> ToVal,
    &'a E: for<'a> ToVal,
    &'a F: for<'a> ToVal,
    &'a G: for<'a> ToVal,
    &'a H: for<'a> ToVal,
    &'a I: for<'a> ToVal,
    &'a J: for<'a> ToVal,
    &'a K: for<'a> ToVal
[src]

impl<A, B, C, D, E, F, G, H> ToVal for (A, B, C, D, E, F, G, H) where
    &'a A: for<'a> ToVal,
    &'a B: for<'a> ToVal,
    &'a C: for<'a> ToVal,
    &'a D: for<'a> ToVal,
    &'a E: for<'a> ToVal,
    &'a F: for<'a> ToVal,
    &'a G: for<'a> ToVal,
    &'a H: for<'a> ToVal
[src]

impl ToVal for Path[src]

impl ToVal for f32[src]

impl ToVal for char[src]

impl ToVal for OsStr[src]

impl ToVal for u16[src]

impl<K, V, S> ToVal for HashMap<K, V, S> where
    K: ToVal,
    V: ToVal
[src]

impl ToVal for ()[src]

impl<'a, T> ToVal for &'a T where
    T: ToVal + ?Sized
[src]

impl ToVal for i128[src]

impl ToVal for bool[src]

impl<T> ToVal for [T; 26] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for Option<T> where
    T: ToVal
[src]

impl<T> ToVal for Vec<T> where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 29] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 6] where
    &'a T: for<'a> ToVal
[src]

impl ToVal for Ordering[src]

impl<T> ToVal for [T; 30] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 14] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 17] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 0] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 22] where
    &'a T: for<'a> ToVal
[src]

impl ToVal for f64[src]

impl<T> ToVal for [T; 12] where
    &'a T: for<'a> ToVal
[src]

impl ToVal for i32[src]

impl<T> ToVal for [T; 24] where
    &'a T: for<'a> ToVal
[src]

impl ToVal for String[src]

impl<T> ToVal for [T; 1] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 28] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 32] where
    &'a T: for<'a> ToVal
[src]

impl<A> ToVal for SmallVec<A> where
    A: Array,
    &'a <A as Array>::Item: for<'a> ToVal
[src]

impl<T> ToVal for [T; 7] where
    &'a T: for<'a> ToVal
[src]

impl ToVal for CString[src]

impl<'a, T> ToVal for &'a mut T where
    T: ToVal + ?Sized
[src]

impl<T> ToVal for VecDeque<T> where
    &'a T: for<'a> ToVal
[src]

impl ToVal for CStr[src]

impl<T> ToVal for [T; 5] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 4] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 15] where
    &'a T: for<'a> ToVal
[src]

impl<A, B, C, D, E, F, G, H, I> ToVal for (A, B, C, D, E, F, G, H, I) where
    &'a A: for<'a> ToVal,
    &'a B: for<'a> ToVal,
    &'a C: for<'a> ToVal,
    &'a D: for<'a> ToVal,
    &'a E: for<'a> ToVal,
    &'a F: for<'a> ToVal,
    &'a G: for<'a> ToVal,
    &'a H: for<'a> ToVal,
    &'a I: for<'a> ToVal
[src]

impl<A, B, C, D, E, F, G, H, I, J, K, L> ToVal for (A, B, C, D, E, F, G, H, I, J, K, L) where
    &'a A: for<'a> ToVal,
    &'a B: for<'a> ToVal,
    &'a C: for<'a> ToVal,
    &'a D: for<'a> ToVal,
    &'a E: for<'a> ToVal,
    &'a F: for<'a> ToVal,
    &'a G: for<'a> ToVal,
    &'a H: for<'a> ToVal,
    &'a I: for<'a> ToVal,
    &'a J: for<'a> ToVal,
    &'a K: for<'a> ToVal,
    &'a L: for<'a> ToVal
[src]

impl ToVal for usize[src]

impl ToVal for str[src]

impl<T> ToVal for [T; 27] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 25] where
    &'a T: for<'a> ToVal
[src]

impl<T> ToVal for [T; 13] where
    &'a T: for<'a> ToVal
[src]

impl ToVal for isize[src]

impl<T> ToVal for [T; 8] where
    &'a T: for<'a> ToVal
[src]

impl ToVal for u32[src]

impl ToVal for OsString[src]

impl ToVal for u64[src]

impl ToVal for i64[src]

impl<T> ToVal for [T; 9] where
    &'a T: for<'a> ToVal
[src]

Loading content...

Implementors

impl ToVal for Callable[src]

impl ToVal for Deque[src]

impl ToVal for Expander[src]

impl ToVal for GIterLen[src]

impl ToVal for Iterable[src]

impl ToVal for Num[src]

impl ToVal for Val[src]

impl ToVal for RFn[src]

impl ToVal for Root<Arr>[src]

impl ToVal for Root<Class>[src]

impl ToVal for Root<Coro>[src]

impl ToVal for Root<GFn>[src]

impl ToVal for Root<GIter>[src]

impl ToVal for Root<Obj>[src]

impl ToVal for Root<RData>[src]

impl ToVal for Root<Str>[src]

impl ToVal for Root<Tab>[src]

impl ToVal for Sym[src]

impl<T> ToVal for RRoot<T> where
    T: RStore
[src]

Loading content...