Sha256: 252b82233c31d15a29a0d185db03d38fc94bbd7e995d26b06da72a5d088f4eb3
Contents?: true
Size: 426 Bytes
Versions: 38
Compression:
Stored size: 426 Bytes
Contents
use crate::ast::{Id, Span}; use std::cell::Cell; thread_local!(static NEXT: Cell<u32> = Cell::new(0)); pub fn reset() { NEXT.with(|c| c.set(0)); } pub fn gen(span: Span) -> Id<'static> { NEXT.with(|next| { let gen = next.get() + 1; next.set(gen); Id::gensym(span, gen) }) } pub fn fill<'a>(span: Span, slot: &mut Option<Id<'a>>) -> Id<'a> { *slot.get_or_insert_with(|| gen(span)) }
Version data entries
38 entries across 38 versions & 1 rubygems