Sha256: 3b615376198a7fe05e91cbbf028c8ec38cb2260cef54acacee4a022fa409d143
Contents?: true
Size: 799 Bytes
Versions: 4
Compression:
Stored size: 799 Bytes
Contents
use crate::prelude::*; use std::collections::HashMap; use wasm_encoder::{TypeSection, ValType}; /// A simple representation of the type section which automatically intern's /// types and ensures they're only defined once. #[derive(Default)] pub struct CoreTypes { pub section: TypeSection, intern: HashMap<(Vec<ValType>, Vec<ValType>), u32>, } impl CoreTypes { pub fn function(&mut self, params: &[ValType], results: &[ValType]) -> u32 { *self .intern .entry((params.to_vec(), results.to_vec())) .or_insert_with(|| { let idx = self.section.len(); self.section .ty() .function(params.iter().copied(), results.iter().copied()); idx }) } }
Version data entries
4 entries across 4 versions & 1 rubygems