hush 0.1.0

Hush is a unix shell scripting language based on the Lua programming language
use gc::{Finalize, Trace};

use crate::fmt::FmtString;
use super::{
	CallContext,
	RustFun,
	NativeFun,
	Panic,
	Value,
};


inventory::submit! { RustFun::from(ToString) }

#[derive(Trace, Finalize)]
struct ToString;

impl NativeFun for ToString {
	fn name(&self) -> &'static str { "std.to_string" }

	fn call(&self, context: CallContext) -> Result<Value, Panic> {
		match context.args() {
			[ Value::String(ref string) ] => Ok(string.copy().into()),
			[ value ] => Ok(value.fmt_string(context.interner()).into()),
			args => Err(Panic::invalid_args(args.len() as u32, 1, context.pos))
		}
	}
}