A systemd nemrég hozott döntése után, hogy hivatalosan is támogatja a Rust-ot, a fejlesztők, Christian Brauner és Lennart Poettering részletesen leírták, hogyan illesztik be a nyelvet a projektbe, és hol nem fogják használni.
A legfontosabb korlátozás a systemd központi megosztott könyvtárait érinti. Bár Rust-cal önálló futtatható programokat lehet fejleszteni, a projekt alapvető könyvtárai, köztük a libsystemd-shared.so, továbbra is C-ben maradnak.
A fejlesztők szerint a fő akadály, hogy a Rust nem nyújt első osztályú támogatást megosztott könyvtárakhoz, és nincs stabil ABI-je. Enélkül a Rust integrálása a systemd megosztott könyvtáraiba azt eredményezné, hogy a Rust-os kód több könyvtárban és futtatható állományban is megduplázódik.
Ez különösen gondot jelentene a systemd számára, amely jelenleg több mint 180 binárisból áll. A statikus linkelés jól működhet önálló programoknál, de a fejlesztők szerint kényelmetlen a projekt alapinfrastruktúrája szempontjából.
Helyette a systemd a meglévő C-s funkcionalitását Rust crate-eken keresztül teszi elérhetővé, így a Rust-ban írt futtatható programok ugyanazokat a belső API-kat érhetik el, mint a C-s megfelelőik. Így a két nyelven írt programok azonosan viselkednek, többek között a parancssori kezelés, a súgóüzenetek és a hibajelentés terén.
A fejlesztők azt is tisztázták, miért utasította el a systemd a Cargo-t, a Rust szabványos build- és függőségkezelő eszközét. A projekt továbbra is kizárólag a Mesont használja, és nem akarják bonyolítani a helyzetet két külön build rendszer fenntartásával. Emellett a Cargo-hoz kapcsolódó biztonsági és szoftver-ellátási lánccal összefüggő aggályokat is megemlítették.
A külső Rust crate-ek terén is óvatosan halad tovább a systemd. Bár nem zárják ki a harmadik féltől származó függőségeket, a karbantartók előbb több tapasztalatot szeretnének szerezni a Rust ökoszisztémával, mielőtt ilyeneket beemelnének.
Egyelőre a Rust komponensek a Rust szabványos könyvtára nélkül, no_std módban fognak működni. Ehelyett a systemd meglévő funkcionalitására támaszkodnak, beleértve a biztonságkritikus fájlrendszer-műveleteket is.
Fontos pontosítás vonatkozik a meglévő C kódra is. A karbantartók kifejezetten elutasítják, hogy csak a programozási nyelv kedvéért írjanak újra bevált komponenseket Rust-ban. Szerintük önmagában az, hogy a C-t Rust-ra cserélik, nem oldja meg automatikusan a biztonsági problémákat, különösen akkor, ha a fő támadási felületet a fájlrendszer-útvonalak kezelése jelenti, nem pedig a memóriabiztonság.
A Rust támogatás így opcionális marad. A fejlesztők elismerik, hogy a Rust nem támogat minden olyan architektúrát, amelyet a systemd jelenleg igen, ezért a Rust nélküli buildek továbbra is teljes értékűek és támogatottak lesznek.

