Only certain Custom Structs require "==" operator for TArray to work?

USTRUCT(BlueprintType)
struct FPaperSkeletonSkinData
{
GENERATED_USTRUCT_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadOnly)
	FName SlotName;

	UPROPERTY(EditAnywhere, BlueprintReadOnly)
	FName NonSpecificName;

	class UPaperSkeletonAttachment* Attachment;

	FPaperSkeletonSkinData(){}

	FPaperSkeletonSkinData(FName slotName, FName nonSpecificName, class UPaperSkeletonAttachment* attachment)
		: SlotName(slotName), NonSpecificName(nonSpecificName), Attachment(attachment)
	{
	}

	bool operator==(const FPaperSkeletonSkinData& rightSkin) const;
};

UPROPERTY(EditAnywhere, BlueprintReadOnly)
TArray<FPaperSkeletonSkinData> Attachments;

This is the Custom Struct that required a “==” operator be set, so that TArray’s.Find function could work properally.
My question is, why does this Custom Struct require that, when this other Custom Struct, which im storing in a TArray aswell, doesnt.


USTRUCT(BlueprintType)
struct FPaperSkeletonAnimationData
{
	GENERATED_USTRUCT_BODY()

	// Skeleton Data (Owner)
	class UPaperSkeletonData* Owner;

	// Name of the Animation
	UPROPERTY(EditAnywhere)
	FName AnimationName;

	// Duration of the Animation
	UPROPERTY(EditAnywhere)
	float Duration;

	// Should the animation loop?
	UPROPERTY(EditAnywhere)
	bool bShouldLoop;

	// Timelines/Objects relative to the Animation
	UPROPERTY(EditAnywhere)
	TArray<FPaperSkeletonTimelineData> Timelines;

	FPaperSkeletonAnimationData(){}

	FPaperSkeletonAnimationData(class UPaperSkeletonData* owner, FName animationName, float duration, bool shouldLoop, TArray<FPaperSkeletonTimelineData> timelines)
		: Owner(owner), AnimationName(animationName), Duration(duration), bShouldLoop(shouldLoop), Timelines(timelines)
	{
	}

	FPaperSkeletonTimelineData* FindTimeline(FName objectName);

};

	// Skeleton Animations
	UPROPERTY(EditAnywhere, BlueprintReadOnly)
	TArray<FPaperSkeletonAnimationData> Animations;

I know why i was made to override the == operator for the TArray, my question was, why hasnt it asked me to do the same for the other 10 Custom Structs that i have implemented, which also get stored in TArray’s aswell. (The example being, FPaperSkeletonAnimationData struct which is almost 2-3 times as complicated as the FPaperSkeletonSkinData struct)

I realized i was using AddUnique when adding FPaperSkeletonSkinData structs to the array, which would need some kind of operator to check if it already existed in the array, therefore making the need for the operator.

Problem solved!