namespace Lua.Standard.OperatingSystem; public sealed class RenameFunction : LuaFunction { public override string Name => "rename"; public static readonly RenameFunction Instance = new(); protected override ValueTask InvokeAsyncCore(LuaFunctionExecutionContext context, Memory buffer, CancellationToken cancellationToken) { var oldName = context.GetArgument(0); var newName = context.GetArgument(1); try { File.Move(oldName, newName); buffer.Span[0] = true; return new(1); } catch(IOException ex) { buffer.Span[0] = LuaValue.Nil; buffer.Span[1] = ex.Message; buffer.Span[2] = ex.HResult; return new(3); } } }