using System;
namespace PkmnLib.Static.Utils;
///
/// A case-insensitive string key. We use this class for things like looking up data from dictionaries, etc.
///
///
/// This is a struct, as it's effectively just a wrapper around a single reference object. Heap allocation would be silly.
///
public readonly record struct StringKey
{
private readonly string _key;
public StringKey(string key)
{
_key = key;
}
public static implicit operator string(StringKey key) => key._key;
public static implicit operator StringKey(string key) => new(key);
public override string ToString() => _key.ToLowerInvariant();
public bool Equals(StringKey other)
{
return string.Equals(_key, other._key, StringComparison.InvariantCultureIgnoreCase);
}
public override int GetHashCode()
{
return StringComparer.InvariantCultureIgnoreCase.GetHashCode(_key);
}
}