Currently, a SparseMatrixCOO can only store explicit vectors. It would be convenient to define rows, cols and vals as views, for example in a factorization-based Levenberg-Marquardt solver, where we will factorize the augmented Jacobian
$$
\begin{bmatrix}
J \\
\sigma I
\end{bmatrix}
$$
but we want to update $J$ and $\sigma$ separately.
I think that can be done by parameterizing the SparseMatrixCOO type with the "vector" types.
@farhadrclass