@Shepmaster ваш комментарий был искрой, но вся эта тема была чрезвычайно полезна.

я есть этот источник:

pub fn draw<G, C>(&self, font: &mut C, draw_state: &DrawState, transform: Matrix2d, g: &mut G)
where
    C: CharacterCache,
    G: Graphics<Texture = <C as CharacterCache>::Texture>,
{
    self.properties.draw(
        self.text.as_str(),
        &mut font,
        &draw_state,
        transform,
        g,
    );
}

И ошибка

the trait bound `&mut C: graphics::character::CharacterCache` is not satisfied 
(the trait `graphics::character::CharacterCache` is not implemented for `&mut C`) 

Единственный аспектC что определяется тем, что он реализуетCharacterCacheНо ошибка говорит об обратном.

DrawState, Matrix2d, CharacterCache и его реализации,Textureи self.properties (Text) предоставляются графической библиотекой Piston 2d. В общих чертах должно быть что-то, что я неправильно понимаю.

Text::draw подпись функции:

fn draw<C, G>(
    &self,
    text: &str,
    cache: &mut C,
    draw_state: &DrawState,
    transform: Matrix2d,
    g: &mut G,
) where
    C: CharacterCache,
    G: Graphics<Texture = C::Texture>,

Ответы на вопрос(2)

Ваш ответ на вопрос