From df16102986626af92dedd0cd9ad214f201ce963a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= Date: Sat, 7 Jan 2023 14:49:02 +0100 Subject: [PATCH] feat(packets): make NullableWrapper a struct for less allocations --- .../NullableWrapper.cs | 2 +- .../Converters/Common/NullableWrapperConverter.cs | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Packets/NosSmooth.PacketSerializer.Abstractions/NullableWrapper.cs b/Packets/NosSmooth.PacketSerializer.Abstractions/NullableWrapper.cs index cf70161..c555b2b 100644 --- a/Packets/NosSmooth.PacketSerializer.Abstractions/NullableWrapper.cs +++ b/Packets/NosSmooth.PacketSerializer.Abstractions/NullableWrapper.cs @@ -17,7 +17,7 @@ namespace NosSmooth.PacketSerializer.Abstractions; /// The value. /// The underlying type. [SuppressMessage("StyleCop.CSharp.NamingRules", "SA1313:Parameter names should begin with lower-case letter", Justification = "Fix this, this should not happen.")] -public record NullableWrapper(T? Value) +public record struct NullableWrapper(T? Value) { /// /// Unwrap the underlying value. diff --git a/Packets/NosSmooth.PacketSerializer/Converters/Common/NullableWrapperConverter.cs b/Packets/NosSmooth.PacketSerializer/Converters/Common/NullableWrapperConverter.cs index 0baee97..aa18184 100644 --- a/Packets/NosSmooth.PacketSerializer/Converters/Common/NullableWrapperConverter.cs +++ b/Packets/NosSmooth.PacketSerializer/Converters/Common/NullableWrapperConverter.cs @@ -28,9 +28,9 @@ public class NullableWrapperConverter : BaseStringConverter - public override Result Serialize(NullableWrapper? obj, PacketStringBuilder builder) + public override Result Serialize(NullableWrapper obj, PacketStringBuilder builder) { - if (obj is null || obj.Value is null) + if (obj.Value is null) { builder.Append("-1"); } @@ -49,29 +49,29 @@ public class NullableWrapperConverter : BaseStringConverter - public override Result?> Deserialize(ref PacketStringEnumerator stringEnumerator, DeserializeOptions options) + public override Result> Deserialize(ref PacketStringEnumerator stringEnumerator, DeserializeOptions options) { var tokenResult = stringEnumerator.GetNextToken(out var packetToken, false); if (!tokenResult.IsSuccess) { - return Result?>.FromError(tokenResult); + return Result>.FromError(tokenResult); } if (packetToken.Token.Length == 2 && packetToken.Token.StartsWith("-1")) { - return Result?>.FromSuccess(new NullableWrapper(default)); + return Result>.FromSuccess(new NullableWrapper(default)); } var converterResult = _converterRepository.GetTypeConverter(); if (!converterResult.IsDefined(out var converter)) { - return Result?>.FromError(converterResult); + return Result>.FromError(converterResult); } var deserializationResult = converter.Deserialize(ref stringEnumerator, new DeserializeOptions(true)); if (!deserializationResult.IsDefined(out var deserialization)) { - return Result?>.FromError(deserializationResult); + return Result>.FromError(deserializationResult); } return new NullableWrapper(deserialization); -- 2.48.1