Zygote and setindex!

I would like to use Zygote to differentiate through some code where I would usually use setindex!, e.g. A[i, j] += v where v is a scalar and A a matrix. My current approach is to use a custom OneHotMatrix

struct OneHotMatrix <: AbstractMatrix{Float64}
    v::Float64
    i::Int
    j::Int
    size::Tuple{Int, Int}
end
Base.getindex(A::OneHotMatrix, i, j) = i == A.i && j == A.j ? A.v : 0.
Base.size(A::OneHotMatrix) = A.size
function ChainRulesCore.rrule(::Type{<:OneHotMatrix}, v, i, j, size)
    Y = OneHotMatrix(v, i, j, size)
    function OneHotMatrix_pullback(x̄)
        Zero(), x̄[i, j], Zero(), Zero(), Zero()
    end
    Y, OneHotMatrix_pullback
end

and write A + OneHotMatrix(v, i, j, size(A)). This works but I guess it is overly complicated. Are there simpler approaches for this situation?