struct вернуть не проблема - он отдаётся вместе с владением наружу, и всё.
а проблема тут в том, что конкретно этот xml-парсер позиционируется как zero-allocation, то есть он не занимает лишнюю память, а при получении значений тэгов и атрибутов возвращает слайсы самого исходного текста xml.
и компилятор тут ругается вполне осмысленно: вы пытаетесь отдать владение парсером наружу, чтобы вызывающая функция сама грохнула его, после того как попользуется. но при этом прочитанный из файла текст xml остаётся во владении функции getconfig, и грохнется сразу же при её завершении. а этот парсер без него не может.
вам проще будет перекомпоновать код так, чтобы чтение файла, инстанцирование парсера и получение данных были в одном блоке. главное не забудьте склонировать полученные данные перед отдачей наружу.
либо взять какой-нибудь другой парсер, который не стесняется получать себе память сам.