If you're using a `struct`, it is likely because you're interested in performance. But by failing to implement `IEquatable<T>` you're loosing performance when comparisons are made because without `IEquatable<T>`, boxing and reflection are used to make comparisons.

== Noncompliant Code Example

[source,csharp]
----
struct MyStruct  // Noncompliant
{
    public int Value { get; set; }
}
----

== Compliant Solution

[source,csharp]
----
struct MyStruct : IEquatable<MyStruct>
{
    public int Value { get; set; }

    public bool Equals(MyStruct other)
    {
        // ...
    }
}
----

include::../see.adoc[]
include::../rspecator.adoc[]