Quando usar IComparable <T> vs. IComparer <T>

Estou tentando descobrir qual dessas interfaces preciso implementar. Ambos fazem essencialmente a mesma coisa. Quando eu usaria um em vez do