По факту создание ApiPart эквивалентно просто возврату ссылки на api_key - чистейший зеро кост, в чём можно убедиться, посмотрев на листинг.
Не стоит это делать через поля как минимум из-за того что ты так N раз будешь копировать ссылку.
pub struct API<'a> {
pub part: APIPart<'a>,
}
Я не имею в виду конкретно данный случай. APIPart вполне может содержать другие данные, кроме ссылок.
Пока лучшее, что я придумал это заприватить APIPart в API и сделать на него геттер.
Хотя это не идеально, если в APIPart будут данные которые нужно будет мутировать, то понадобится еще метод типа part_mut().
Не совсем понимаю, что конкретно имеется в виду.
Если просто
то это не вариант.
Весь смысл APIPart как раз в том, чтобы сгруппировать одинаковую по смыслу логику.
А так все методы будут напрямую в API.