On your example it is red, but only because you assigned the rect vertexes colour to white.
sf::Drawable color works more as a filter color. The default is white, meaning that the object colours are fully drawn as they are.
For instance, if you have a sprite with a nice image, and do
sprite.SetColor(sf::Color(255,0,0));
The sprite will only be drawn with it's red components, all greens and blues are discarded.
On your code try this:
sf::Shape rect = sf::Shape::Rectangle(100,100,200,200,sf::Color(0,255,255));
(...)
rect.SetColor( sf::Color(180,0,0) );
The result is black, because the vertexes colour (0,255,255) filtered by (180,0,0) results in (0,0,0).
Maybe the sf::Drawable::SetColor should have a different name, because on shapes it may be confusing.
I think the unique way to change the colour of your shape is to change all vertexes colors. :roll: