Are you sure none(self) does what you want? I'm not sure it automatically flattens the array contents.
No, I'm not really sure: actually $Larry wrote unless any(self). I gathered my version would have been the same and actually it appears to work for one method. I reverted to $Larry's choice, but it doesn't seem to make a difference:
pugs> my @array does role {
....> multi method insert ($x) { @.push($x) unless any(self) eqv $x }
....> multi method insert (@x) { @.insert($_) for @x }
....> } = 1..5;
pugs> @array.insert($_) for 2..6;
pugs> say @array
123456
Bool::True
pugs> @array.insert(3..7);
pugs> say @array
12345634567
Bool::True