gpt4 book ai didi

rust - 为什么 Piston text() 需要对字形缓存的可变引用?

转载 作者:行者123 更新时间:2023-11-29 08:05:13 25 4
gpt4 key购买 nike

我很好奇为什么text()获取字形缓存的可变借用:

cache: &mut C

我的理解是字形缓存表示从字体文件加载的静态字符(字形)。为什么这些需要能够被底层图形系统改变?

最佳答案

因为如果您遵循 Text 中的代码一路往下,它appears that it loads each character on demand on a per-font-size basis .如果你要求它提供一个它没有缓存的大小的字符,它会加载它——这需要一个可变引用来修改它的内部状态。真的,这是它使用 entry 的第一部分API - 需要可变引用:fn entry(&mut self, key: K) -> Entry<K, V>

虽然有问题的代码:

impl<'a> graphics::character::CharacterCache for GlyphCache<'a> {
type Texture = Texture;

fn character(&mut self, size: FontSize, ch: char) -> &Character {
match {
match self.data.entry(size) { // <----- BAM!
Vacant(entry) => entry.insert(HashMap::new()),
Occupied(entry) => entry.into_mut(),
}
}.contains_key(&ch) {
true => &self.data[&size][&ch],
false => { self.load_character(size, ch); &self.data[&size][&ch] }
// ^^^^ BAM!
}
}
}

关于rust - 为什么 Piston text() 需要对字形缓存的可变引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41404847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com