The following should take advantage of sparsity:
julia> (1:4) .* Diagonal(1:4)
4×4 Matrix{Int64}:
1 0 0 0
0 4 0 0
0 0 9 0
0 0 0 16
julia> (1:4) .* Bidiagonal(1:4,1:3,:L)
4×4 Matrix{Int64}:
1 0 0 0
2 4 0 0
0 6 9 0
0 0 12 16
julia> (1:4) .* Tridiagonal(1:3,1:4,1:3)
4×4 Matrix{Int64}:
1 1 0 0
2 4 4 0
0 6 9 9
0 0 12 16
I found a related proposal here: JuliaLang/julia#24317