Approaches for IDW and nearest neighbours
Let’s try to stay in {terra}!
It provides terra::interpolate() for a SpatRaster + gstat object.
To achieve this, provide d as a data frame to gstat::gstat() with coordinate columns.
d2 <- data.frame(as.data.frame(d), crds(vect(d)))
class(d2)
## [1] "data.frame"