func FromGRPCStatus(status *status.Status) *Error {
	err := build(&Definition{
		code:          uint32(status.Code()),
		messageFormat: status.Message(),
	}, 0)
	if ErrorDetailsFromProto == nil {
		return err
	}
	detailMsgs := status.Details()
	detailProtos := make([]proto.Message, 0, len(detailMsgs))
	for _, msg := range detailMsgs {  
		if msg, ok := msg.(proto.Message); ok {
			detailProtos = append(detailProtos, msg)
		}
	}
	details, rest := ErrorDetailsFromProto(detailProtos...)
	if len(rest) != 0 {
		err.details = rest
	}
	if details != nil {
		setErrorDetails(err, details)
	}
	return err
}
FromGRPCStatus converts the gRPC status message into an Error.
package errors
import (
	"context"
	"github.com/golang/protobuf/proto"
	"google.golang.org/grpc"
	"google.golang.org/grpc/codes"
	"google.golang.org/grpc/status"
)