As one solution, you could override Base.getindex:
julia> import Base: getindex
julia> getindex(s::mystuff, i) = mystuff(s.x[i], s.y[i])
getindex (generic function with 545 methods)julia> check = mystuff([1,2,3],[8,9,10])
mystuff([1.0, 2.0, 3.0], [8.0, 9.0, 10.0])julia> check[1:2]
mystuff([1.0, 2.0], [8.0, 9.0])
This is a typical Julia pattern. Use the type system to create specific behavior and override Base or other functions (i.e. add new methods of those functions) locally to support your types.