Move DeriveBuiltin to derive_key

This commit is contained in:
Ayaz Hafiz 2022-08-01 14:03:47 -05:00
parent 6f06a59cdf
commit 05d8bca0fb
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
4 changed files with 99 additions and 92 deletions

View file

@ -57,11 +57,23 @@ pub enum Derived {
Key(DeriveKey),
}
/// The builtin ability member to derive.
#[derive(Clone, Copy)]
pub enum DeriveBuiltin {
ToEncoder,
}
impl Derived {
pub fn encoding(subs: &Subs, var: Variable) -> Result<Self, DeriveError> {
match encoding::FlatEncodable::from_var(subs, var)? {
FlatEncodable::Immediate(imm) => Ok(Derived::Immediate(imm)),
FlatEncodable::Key(repr) => Ok(Derived::Key(DeriveKey::ToEncoder(repr))),
pub fn builtin(
builtin: DeriveBuiltin,
subs: &Subs,
var: Variable,
) -> Result<Self, DeriveError> {
match builtin {
DeriveBuiltin::ToEncoder => match encoding::FlatEncodable::from_var(subs, var)? {
FlatEncodable::Immediate(imm) => Ok(Derived::Immediate(imm)),
FlatEncodable::Key(repr) => Ok(Derived::Key(DeriveKey::ToEncoder(repr))),
},
}
}
}