我正在尝试使用sdl2 ttf渲染一些字体。 sdl2中Font类型的类型使用PhantomData对上下文具有生命周期依赖性。我发现它很难使用。这是我试图使用的最小代码。
main.rs
extern crate sdl2;
use sdl2::ttf::{self, Font};
use sdl2::ttf::Sdl2TtfContext;
struct App<'ttf> {
ctx: Sdl2TtfContext,
glyph_renderer: GlyphRenderer<'ttf>,
}
impl<'ttf> App<'ttf> {
fn render(&self) {}
}
struct GlyphRenderer<'ttf> {
font: Font<'ttf, 'static>,
}
fn main() {
let ttf_context = ttf::init().unwrap();
let font = ttf_context.load_font("./assets/Supermercado-Regular.ttf", 50).unwrap();
let glyph_renderer = GlyphRenderer { font };
let app = App {
ctx: ttf_context,
glyph_renderer,
};
app.render();
}
Cargo.toml
[package]
name = "demo-rust"
version = "0.1.0"
authors = ["clojure"]
[dependencies.sdl2]
version = "0.31.0"
default-features = false
features = ["ttf"]
如果您发现Sdl2TtfContext
和Font
有用,则此文档包含$count=count($json);
if($count > 10){
$count = 10;
}
for ($x = 0; $x < $count; $x++) {
}
和if($request->hasFile('ex_file')){
return "yes i have a file";
}
的声明。 DOC
答案 0 :(得分:0)
好吧,我可以通过将上下文创建移动到外部作用域来解决此问题。它不能放在结构上。
fn start(ttf_context: &Sdl2TtfContext) {
let font = ttf_context.load_font("./assets/Supermercado-Regular.ttf", 50).unwrap();
let glyph_renderer = GlyphRenderer { font };
let app = App {
glyph_renderer,
};
app.render();
}
fn main() {
let ttf_context = ttf::init().unwrap();
start(&ttf_context);
}