Turing custom distribution implementation

Had also not seen it immediately, but your struct ShiftedExponential{T<:Real} has hardcoded its fields as Float64. Seems your code works fine, when you change it to rate::T and shift::T.