Я не имею в виду конкретно данный случай. APIPart вполне может содержать другие данные, кроме ссылок.
Хотя это не идеально, если в APIPart будут данные которые нужно будет мутировать, то понадобится еще метод типа part_mut().
Это может и так, если APIPart будет содержать только ссылки, но это не гарантированно.
О каких N раз идет речь? Имеешь в виду, если будет N разных APIPart?
Тем не менее твой вариант я думаю не особо мне подходит, потому что при вызове part() будет каждый раз создаваться новый APIPart
В идеале я бы хотел именно через поля, ЕСЛИ такое возможно.
Например redis - у него даже встроенная поддержка TTL у записей есть.
Но если не хочется множить сущности или нагрузка на сильно большая - вполне можно забить.