pw_span: Switch from pw::span to std::span

Replace pw::span with std::span and "pw_span/span.h" with <span>
throughout the codebase.

Change-Id: Ib1fa873168b6093794e861611d750fcad6285d6c
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12801
Commit-Queue: Wyatt Hepler <hepler@google.com>
Reviewed-by: Rob Mohr <mohrr@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
diff --git a/pw_rpc/base_server_writer.cc b/pw_rpc/base_server_writer.cc
index 4fa1f1f..1e23fc8 100644
--- a/pw_rpc/base_server_writer.cc
+++ b/pw_rpc/base_server_writer.cc
@@ -47,7 +47,7 @@
   state_ = kClosed;
 }
 
-span<std::byte> BaseServerWriter::AcquirePayloadBuffer() {
+std::span<std::byte> BaseServerWriter::AcquirePayloadBuffer() {
   if (!open()) {
     return {};
   }
@@ -56,14 +56,15 @@
   return response_.payload(packet());
 }
 
-Status BaseServerWriter::ReleasePayloadBuffer(span<const std::byte> payload) {
+Status BaseServerWriter::ReleasePayloadBuffer(
+    std::span<const std::byte> payload) {
   if (!open()) {
     return Status::FAILED_PRECONDITION;
   }
   return call_.channel().Send(response_, packet(payload));
 }
 
-Packet BaseServerWriter::packet(span<const std::byte> payload) const {
+Packet BaseServerWriter::packet(std::span<const std::byte> payload) const {
   return Packet(PacketType::RPC,
                 call_.channel().id(),
                 call_.service().id(),
diff --git a/pw_rpc/base_server_writer_test.cc b/pw_rpc/base_server_writer_test.cc
index 8c1b914..b10620e 100644
--- a/pw_rpc/base_server_writer_test.cc
+++ b/pw_rpc/base_server_writer_test.cc
@@ -28,7 +28,7 @@
 class TestService : public internal::Service {
  public:
   constexpr TestService(uint32_t id)
-      : Service(id, span(&method, 1)), method(8) {}
+      : Service(id, std::span(&method, 1)), method(8) {}
 
   internal::Method method;
 };
@@ -62,8 +62,8 @@
 
   constexpr FakeServerWriter() = default;
 
-  Status Write(span<const byte> response) {
-    span buffer = AcquirePayloadBuffer();
+  Status Write(std::span<const byte> response) {
+    std::span buffer = AcquirePayloadBuffer();
     std::memcpy(buffer.data(),
                 response.data(),
                 std::min(buffer.size(), response.size()));
diff --git a/pw_rpc/channel.cc b/pw_rpc/channel.cc
index 5747577..b34ebf2 100644
--- a/pw_rpc/channel.cc
+++ b/pw_rpc/channel.cc
@@ -21,10 +21,10 @@
 
 using std::byte;
 
-span<byte> Channel::OutputBuffer::payload(const Packet& packet) const {
+std::span<byte> Channel::OutputBuffer::payload(const Packet& packet) const {
   const size_t reserved_size = packet.MinEncodedSizeBytes();
   return reserved_size <= buffer_.size() ? buffer_.subspan(reserved_size)
-                                         : span<byte>();
+                                         : std::span<byte>();
 }
 
 Status Channel::Send(OutputBuffer& buffer, const internal::Packet& packet) {
diff --git a/pw_rpc/channel_test.cc b/pw_rpc/channel_test.cc
index 5f195af..b63535b 100644
--- a/pw_rpc/channel_test.cc
+++ b/pw_rpc/channel_test.cc
@@ -27,7 +27,7 @@
   class NameTester : public ChannelOutput {
    public:
     NameTester(const char* name) : ChannelOutput(name) {}
-    span<std::byte> AcquireBuffer() override { return {}; }
+    std::span<std::byte> AcquireBuffer() override { return {}; }
     void SendAndReleaseBuffer(size_t) override {}
   };
 
@@ -67,7 +67,7 @@
   internal::Channel channel(100, &output);
 
   Channel::OutputBuffer output_buffer(channel.AcquireBuffer());
-  const span payload = output_buffer.payload(kTestPacket);
+  const std::span payload = output_buffer.payload(kTestPacket);
 
   EXPECT_EQ(payload.size(), output.buffer().size() - kReservedSize);
   EXPECT_EQ(output.buffer().data() + kReservedSize, payload.data());
@@ -93,7 +93,7 @@
   internal::Channel channel(100, &output);
 
   Channel::OutputBuffer output_buffer = channel.AcquireBuffer();
-  const span payload = output_buffer.payload(kTestPacket);
+  const std::span payload = output_buffer.payload(kTestPacket);
 
   EXPECT_EQ(payload.size(), output.buffer().size() - kReservedSize);
   EXPECT_EQ(output.buffer().data() + kReservedSize, payload.data());
diff --git a/pw_rpc/nanopb/method.cc b/pw_rpc/nanopb/method.cc
index 7ed0522..3d91070 100644
--- a/pw_rpc/nanopb/method.cc
+++ b/pw_rpc/nanopb/method.cc
@@ -37,7 +37,7 @@
 
 using std::byte;
 
-Status Method::DecodeRequest(span<const byte> buffer,
+Status Method::DecodeRequest(std::span<const byte> buffer,
                              void* proto_struct) const {
   auto input = pb_istream_from_buffer(
       reinterpret_cast<const pb_byte_t*>(buffer.data()), buffer.size());
@@ -47,7 +47,7 @@
 }
 
 StatusWithSize Method::EncodeResponse(const void* proto_struct,
-                                      span<byte> buffer) const {
+                                      std::span<byte> buffer) const {
   auto output = pb_ostream_from_buffer(
       reinterpret_cast<pb_byte_t*>(buffer.data()), buffer.size());
   if (pb_encode(&output, static_cast<Fields>(response_fields_), proto_struct)) {
@@ -57,8 +57,8 @@
 }
 
 StatusWithSize Method::CallUnary(ServerCall& call,
-                                 span<const byte> request_buffer,
-                                 span<byte> response_buffer,
+                                 std::span<const byte> request_buffer,
+                                 std::span<byte> response_buffer,
                                  void* request_struct,
                                  void* response_struct) const {
   Status status = DecodeRequest(request_buffer, request_struct);
@@ -76,7 +76,7 @@
 }
 
 StatusWithSize Method::CallServerStreaming(ServerCall& call,
-                                           span<const byte> request_buffer,
+                                           std::span<const byte> request_buffer,
                                            void* request_struct) const {
   Status status = DecodeRequest(request_buffer, request_struct);
   if (!status.ok()) {
diff --git a/pw_rpc/nanopb/method_test.cc b/pw_rpc/nanopb/method_test.cc
index 6d82f2a..80fd216 100644
--- a/pw_rpc/nanopb/method_test.cc
+++ b/pw_rpc/nanopb/method_test.cc
@@ -36,14 +36,15 @@
 
 #define _ENCODE_PB_IMPL(proto, init, result, unique)              \
   std::array<pb_byte_t, 2 * sizeof(proto)> _pb_buffer_##unique{}; \
-  const span result =                                             \
+  const std::span result =                                        \
       EncodeProtobuf<proto, proto##_fields>(proto init, _pb_buffer_##unique)
 
 template <typename T, auto fields>
-span<const byte> EncodeProtobuf(const T& protobuf, span<pb_byte_t> buffer) {
+std::span<const byte> EncodeProtobuf(const T& protobuf,
+                                     std::span<pb_byte_t> buffer) {
   auto output = pb_ostream_from_buffer(buffer.data(), buffer.size());
   EXPECT_TRUE(pb_encode(&output, fields, &protobuf));
-  return as_bytes(buffer.first(output.bytes_written));
+  return std::as_bytes(buffer.first(output.bytes_written));
 }
 
 class FakeGeneratedService : public Service {
diff --git a/pw_rpc/nanopb/public_overrides/pw_rpc/internal/method.h b/pw_rpc/nanopb/public_overrides/pw_rpc/internal/method.h
index f50a997..19f1497 100644
--- a/pw_rpc/nanopb/public_overrides/pw_rpc/internal/method.h
+++ b/pw_rpc/nanopb/public_overrides/pw_rpc/internal/method.h
@@ -16,11 +16,11 @@
 #include <algorithm>
 #include <cstddef>
 #include <cstdint>
+#include <span>
 
 #include "pw_rpc/internal/base_method.h"
 #include "pw_rpc/internal/base_server_writer.h"
 #include "pw_rpc/server_context.h"
-#include "pw_span/span.h"
 #include "pw_status/status.h"
 #include "pw_status/status_with_size.h"
 
@@ -137,17 +137,18 @@
   // calls the invoker function, which encodes and decodes the request and
   // response (if any) and calls the user-defined RPC function.
   StatusWithSize Invoke(ServerCall& call,
-                        span<const std::byte> request,
-                        span<std::byte> payload_buffer) const {
+                        std::span<const std::byte> request,
+                        std::span<std::byte> payload_buffer) const {
     return invoker_(*this, call, request, payload_buffer);
   }
 
   // Decodes a request protobuf with Nanopb to the provided buffer.
-  Status DecodeRequest(span<const std::byte> buffer, void* proto_struct) const;
+  Status DecodeRequest(std::span<const std::byte> buffer,
+                       void* proto_struct) const;
 
   // Encodes a response protobuf with Nanopb to the provided buffer.
   StatusWithSize EncodeResponse(const void* proto_struct,
-                                span<std::byte> buffer) const;
+                                std::span<std::byte> buffer) const;
 
  private:
   // Generic version of the unary RPC function signature:
@@ -187,8 +188,8 @@
   // returns the number of bytes written to the response buffer, if any.
   using Invoker = StatusWithSize (&)(const Method&,
                                      ServerCall&,
-                                     span<const std::byte>,
-                                     span<std::byte>);
+                                     std::span<const std::byte>,
+                                     std::span<std::byte>);
 
   constexpr Method(Function function,
                    Invoker invoker,
@@ -202,13 +203,13 @@
         response_fields_(response) {}
 
   StatusWithSize CallUnary(ServerCall& call,
-                           span<const std::byte> request_buffer,
-                           span<std::byte> response_buffer,
+                           std::span<const std::byte> request_buffer,
+                           std::span<std::byte> response_buffer,
                            void* request_struct,
                            void* response_struct) const;
 
   StatusWithSize CallServerStreaming(ServerCall& call,
-                                     span<const std::byte> request_buffer,
+                                     std::span<const std::byte> request_buffer,
                                      void* request_struct) const;
 
   // TODO(hepler): Add CallClientStreaming and CallBidiStreaming
@@ -219,8 +220,8 @@
   template <size_t request_size, size_t response_size>
   static StatusWithSize UnaryInvoker(const Method& method,
                                      ServerCall& call,
-                                     span<const std::byte> request_buffer,
-                                     span<std::byte> response_buffer) {
+                                     std::span<const std::byte> request_buffer,
+                                     std::span<std::byte> response_buffer) {
     std::aligned_storage_t<request_size, alignof(std::max_align_t)>
         request_struct{};
     std::aligned_storage_t<response_size, alignof(std::max_align_t)>
@@ -240,8 +241,8 @@
   static StatusWithSize ServerStreamingInvoker(
       const Method& method,
       ServerCall& call,
-      span<const std::byte> request_buffer,
-      span<std::byte> /* payload not used */) {
+      std::span<const std::byte> request_buffer,
+      std::span<std::byte> /* payload not used */) {
     std::aligned_storage_t<request_size, alignof(std::max_align_t)>
         request_struct{};
 
@@ -264,7 +265,7 @@
 
 template <typename T>
 Status ServerWriter<T>::Write(const T& response) {
-  span<std::byte> buffer = AcquirePayloadBuffer();
+  std::span<std::byte> buffer = AcquirePayloadBuffer();
 
   if (auto result = method().EncodeResponse(&response, buffer); result.ok()) {
     return ReleasePayloadBuffer(buffer.first(result.size()));
diff --git a/pw_rpc/packet.cc b/pw_rpc/packet.cc
index b6e6701..9a7e34f 100644
--- a/pw_rpc/packet.cc
+++ b/pw_rpc/packet.cc
@@ -20,12 +20,12 @@
 
 using std::byte;
 
-Packet Packet::FromBuffer(span<const byte> data) {
+Packet Packet::FromBuffer(std::span<const byte> data) {
   PacketType type = PacketType::RPC;
   uint32_t channel_id = 0;
   uint32_t service_id = 0;
   uint32_t method_id = 0;
-  span<const byte> payload;
+  std::span<const byte> payload;
   Status status;
 
   uint32_t value;
@@ -68,7 +68,7 @@
   return Packet(type, channel_id, service_id, method_id, payload, status);
 }
 
-StatusWithSize Packet::Encode(span<byte> buffer) const {
+StatusWithSize Packet::Encode(std::span<byte> buffer) const {
   pw::protobuf::NestedEncoder encoder(buffer);
   RpcPacket::Encoder rpc_packet(&encoder);
 
@@ -81,7 +81,7 @@
   rpc_packet.WriteMethodId(method_id_);
   rpc_packet.WriteStatus(status_);
 
-  span<const byte> proto;
+  std::span<const byte> proto;
   if (Status status = encoder.Encode(&proto); !status.ok()) {
     return StatusWithSize(status, 0);
   }
diff --git a/pw_rpc/packet_test.cc b/pw_rpc/packet_test.cc
index a8d96a7..87d5c83 100644
--- a/pw_rpc/packet_test.cc
+++ b/pw_rpc/packet_test.cc
@@ -91,7 +91,7 @@
   StatusWithSize sws = packet.Encode(buffer);
   ASSERT_EQ(sws.status(), Status::OK);
 
-  span<byte> packet_data(buffer, sws.size());
+  std::span<byte> packet_data(buffer, sws.size());
   Packet decoded = Packet::FromBuffer(packet_data);
 
   EXPECT_EQ(decoded.type(), packet.type());
diff --git a/pw_rpc/public/pw_rpc/channel.h b/pw_rpc/public/pw_rpc/channel.h
index 2602bbe..ecae939 100644
--- a/pw_rpc/public/pw_rpc/channel.h
+++ b/pw_rpc/public/pw_rpc/channel.h
@@ -14,9 +14,9 @@
 #pragma once
 
 #include <cstdint>
+#include <span>
 
 #include "pw_assert/assert.h"
-#include "pw_span/span.h"
 #include "pw_status/status.h"
 
 namespace pw::rpc {
@@ -37,7 +37,7 @@
   constexpr const char* name() const { return name_; }
 
   // Acquire a buffer into which to write an outgoing RPC packet.
-  virtual span<std::byte> AcquireBuffer() = 0;
+  virtual std::span<std::byte> AcquireBuffer() = 0;
 
   // Sends the contents of the buffer from AcquireBuffer().
   virtual void SendAndReleaseBuffer(size_t size) = 0;
diff --git a/pw_rpc/public/pw_rpc/internal/base_method.h b/pw_rpc/public/pw_rpc/internal/base_method.h
index 07db616..4b3fdae 100644
--- a/pw_rpc/public/pw_rpc/internal/base_method.h
+++ b/pw_rpc/public/pw_rpc/internal/base_method.h
@@ -27,8 +27,8 @@
   // Implementations must provide the Invoke method, which the Server calls:
   //
   // StatusWithSize Invoke(ServerCall& call,
-  //                       span<const std::byte> request,
-  //                       span<std::byte> payload_buffer) const;
+  //                       std::span<const std::byte> request,
+  //                       std::span<std::byte> payload_buffer) const;
 
  protected:
   constexpr BaseMethod(uint32_t id) : id_(id) {}
diff --git a/pw_rpc/public/pw_rpc/internal/base_server_writer.h b/pw_rpc/public/pw_rpc/internal/base_server_writer.h
index 413293c..47c6858 100644
--- a/pw_rpc/public/pw_rpc/internal/base_server_writer.h
+++ b/pw_rpc/public/pw_rpc/internal/base_server_writer.h
@@ -14,12 +14,12 @@
 #pragma once
 
 #include <cstddef>
+#include <span>
 #include <utility>
 
 #include "pw_containers/intrusive_list.h"
 #include "pw_rpc/internal/call.h"
 #include "pw_rpc/internal/channel.h"
-#include "pw_span/span.h"
 
 namespace pw::rpc::internal {
 
@@ -54,12 +54,12 @@
 
   const Method& method() const { return call_.method(); }
 
-  span<std::byte> AcquirePayloadBuffer();
+  std::span<std::byte> AcquirePayloadBuffer();
 
-  Status ReleasePayloadBuffer(span<const std::byte> payload);
+  Status ReleasePayloadBuffer(std::span<const std::byte> payload);
 
  private:
-  Packet packet(span<const std::byte> payload = {}) const;
+  Packet packet(std::span<const std::byte> payload = {}) const;
 
   ServerCall call_;
   Channel::OutputBuffer response_;
diff --git a/pw_rpc/public/pw_rpc/internal/channel.h b/pw_rpc/public/pw_rpc/internal/channel.h
index b3f01f7..b42c8a0 100644
--- a/pw_rpc/public/pw_rpc/internal/channel.h
+++ b/pw_rpc/public/pw_rpc/internal/channel.h
@@ -13,8 +13,9 @@
 // the License.
 #pragma once
 
+#include <span>
+
 #include "pw_rpc/channel.h"
-#include "pw_span/span.h"
 #include "pw_status/status.h"
 
 namespace pw::rpc::internal {
@@ -48,14 +49,15 @@
     }
 
     // Returns a portion of this OutputBuffer to use as the packet payload.
-    span<std::byte> payload(const Packet& packet) const;
+    std::span<std::byte> payload(const Packet& packet) const;
 
    private:
     friend class Channel;
 
-    explicit constexpr OutputBuffer(span<std::byte> buffer) : buffer_(buffer) {}
+    explicit constexpr OutputBuffer(std::span<std::byte> buffer)
+        : buffer_(buffer) {}
 
-    span<std::byte> buffer_;
+    std::span<std::byte> buffer_;
   };
 
   // Acquires a buffer for the packet.
diff --git a/pw_rpc/public/pw_rpc/internal/packet.h b/pw_rpc/public/pw_rpc/internal/packet.h
index 3f5e87d..79b18f6 100644
--- a/pw_rpc/public/pw_rpc/internal/packet.h
+++ b/pw_rpc/public/pw_rpc/internal/packet.h
@@ -15,9 +15,9 @@
 
 #include <cstddef>
 #include <cstdint>
+#include <span>
 
 #include "pw_rpc_protos/packet.pwpb.h"
-#include "pw_span/span.h"
 #include "pw_status/status_with_size.h"
 
 namespace pw::rpc::internal {
@@ -28,13 +28,13 @@
 
   // Parses a packet from a protobuf message. Missing or malformed fields take
   // their default values.
-  static Packet FromBuffer(span<const std::byte> data);
+  static Packet FromBuffer(std::span<const std::byte> data);
 
   constexpr Packet(PacketType type,
                    uint32_t channel_id = kUnassignedId,
                    uint32_t service_id = kUnassignedId,
                    uint32_t method_id = kUnassignedId,
-                   span<const std::byte> payload = {},
+                   std::span<const std::byte> payload = {},
                    Status status = Status::OK)
       : type_(type),
         channel_id_(channel_id),
@@ -44,7 +44,7 @@
         status_(status) {}
 
   // Encodes the packet into its wire format. Returns the encoded size.
-  StatusWithSize Encode(span<std::byte> buffer) const;
+  StatusWithSize Encode(std::span<std::byte> buffer) const;
 
   // Determines the space required to encode the packet proto fields for a
   // response. This may be used to split the buffer into reserved space and
@@ -58,14 +58,14 @@
   uint32_t channel_id() const { return channel_id_; }
   uint32_t service_id() const { return service_id_; }
   uint32_t method_id() const { return method_id_; }
-  const span<const std::byte>& payload() const { return payload_; }
+  const std::span<const std::byte>& payload() const { return payload_; }
   Status status() const { return status_; }
 
   void set_type(PacketType type) { type_ = type; }
   void set_channel_id(uint32_t channel_id) { channel_id_ = channel_id; }
   void set_service_id(uint32_t service_id) { service_id_ = service_id; }
   void set_method_id(uint32_t method_id) { method_id_ = method_id; }
-  void set_payload(span<const std::byte> payload) { payload_ = payload; }
+  void set_payload(std::span<const std::byte> payload) { payload_ = payload; }
   void set_status(Status status) { status_ = status; }
 
  private:
@@ -73,7 +73,7 @@
   uint32_t channel_id_;
   uint32_t service_id_;
   uint32_t method_id_;
-  span<const std::byte> payload_;
+  std::span<const std::byte> payload_;
   Status status_;
 };
 
diff --git a/pw_rpc/public/pw_rpc/internal/service.h b/pw_rpc/public/pw_rpc/internal/service.h
index 7e5a96f..9a82b57 100644
--- a/pw_rpc/public/pw_rpc/internal/service.h
+++ b/pw_rpc/public/pw_rpc/internal/service.h
@@ -14,11 +14,11 @@
 #pragma once
 
 #include <cstdint>
+#include <span>
 #include <utility>
 
 #include "pw_containers/intrusive_list.h"
 #include "pw_rpc/internal/method.h"
-#include "pw_span/span.h"
 
 namespace pw::rpc::internal {
 
@@ -40,7 +40,7 @@
   friend class ServiceRegistry;
 
   uint32_t id_;
-  span<const Method> methods_;
+  std::span<const Method> methods_;
 };
 
 }  // namespace pw::rpc::internal
diff --git a/pw_rpc/public/pw_rpc/server.h b/pw_rpc/public/pw_rpc/server.h
index 1232a75..c8b0476 100644
--- a/pw_rpc/public/pw_rpc/server.h
+++ b/pw_rpc/public/pw_rpc/server.h
@@ -14,6 +14,7 @@
 #pragma once
 
 #include <cstddef>
+#include <span>
 
 #include "pw_containers/intrusive_list.h"
 #include "pw_rpc/channel.h"
@@ -25,7 +26,7 @@
 
 class Server {
  public:
-  constexpr Server(span<Channel> channels)
+  constexpr Server(std::span<Channel> channels)
       : channels_(static_cast<internal::Channel*>(channels.data()),
                   channels.size()) {}
 
@@ -36,7 +37,8 @@
     services_.push_front(service);
   }
 
-  void ProcessPacket(span<const std::byte> packet, ChannelOutput& interface);
+  void ProcessPacket(std::span<const std::byte> packet,
+                     ChannelOutput& interface);
 
   constexpr size_t channel_count() const { return channels_.size(); }
 
@@ -47,12 +49,12 @@
   void InvokeMethod(const internal::Packet& request,
                     Channel& channel,
                     internal::Packet& response,
-                    span<std::byte> buffer);
+                    std::span<std::byte> buffer);
 
   internal::Channel* FindChannel(uint32_t id) const;
   internal::Channel* AssignChannel(uint32_t id, ChannelOutput& interface);
 
-  span<internal::Channel> channels_;
+  std::span<internal::Channel> channels_;
   IntrusiveList<internal::Service> services_;
   IntrusiveList<internal::BaseServerWriter> writers_;
 };
diff --git a/pw_rpc/pw_rpc_private/test_utils.h b/pw_rpc/pw_rpc_private/test_utils.h
index 6dcd8a6..8ad045b 100644
--- a/pw_rpc/pw_rpc_private/test_utils.h
+++ b/pw_rpc/pw_rpc_private/test_utils.h
@@ -16,12 +16,12 @@
 #include <array>
 #include <cstddef>
 #include <cstdint>
+#include <span>
 
 #include "pw_rpc/internal/channel.h"
 #include "pw_rpc/internal/method.h"
 #include "pw_rpc/internal/packet.h"
 #include "pw_rpc/internal/server.h"
-#include "pw_span/span.h"
 
 namespace pw::rpc {
 
@@ -31,19 +31,19 @@
   constexpr TestOutput(const char* name = "TestOutput")
       : ChannelOutput(name), sent_packet_{} {}
 
-  span<std::byte> AcquireBuffer() override { return buffer_; }
+  std::span<std::byte> AcquireBuffer() override { return buffer_; }
 
   void SendAndReleaseBuffer(size_t size) override {
-    sent_packet_ = span(buffer_.data(), size);
+    sent_packet_ = std::span(buffer_.data(), size);
   }
 
-  span<const std::byte> buffer() const { return buffer_; }
+  std::span<const std::byte> buffer() const { return buffer_; }
 
-  const span<const std::byte>& sent_packet() const { return sent_packet_; }
+  const std::span<const std::byte>& sent_packet() const { return sent_packet_; }
 
  private:
   std::array<std::byte, buffer_size> buffer_;
-  span<const std::byte> sent_packet_;
+  std::span<const std::byte> sent_packet_;
 };
 
 // Version of the internal::Server with extra methods exposed for testing.
@@ -63,7 +63,7 @@
 
   ServerContextForTest(const internal::Method& method)
       : channel_(Channel::Create<kChannelId>(&output_)),
-        server_(span(&channel_, 1)),
+        server_(std::span(&channel_, 1)),
         service_(kServiceId),
         context_(static_cast<internal::Server&>(server_),
                  static_cast<internal::Channel&>(channel_),
@@ -75,7 +75,7 @@
   ServerContextForTest() : ServerContextForTest(service_.method) {}
 
   // Creates a packet for this context's channel, service, and method.
-  internal::Packet packet(span<const std::byte> payload) const {
+  internal::Packet packet(std::span<const std::byte> payload) const {
     return internal::Packet(internal::PacketType::RPC,
                             kChannelId,
                             kServiceId,
diff --git a/pw_rpc/server.cc b/pw_rpc/server.cc
index 11857c1..7f20a36 100644
--- a/pw_rpc/server.cc
+++ b/pw_rpc/server.cc
@@ -29,7 +29,8 @@
 using internal::Packet;
 using internal::PacketType;
 
-void Server::ProcessPacket(span<const byte> data, ChannelOutput& interface) {
+void Server::ProcessPacket(std::span<const byte> data,
+                           ChannelOutput& interface) {
   Packet packet = Packet::FromBuffer(data);
   if (packet.is_control()) {
     // TODO(frolv): Handle control packets.
@@ -73,7 +74,7 @@
 void Server::InvokeMethod(const Packet& request,
                           Channel& channel,
                           internal::Packet& response,
-                          span<std::byte> payload_buffer) {
+                          std::span<std::byte> payload_buffer) {
   auto service = std::find_if(services_.begin(), services_.end(), [&](auto& s) {
     return s.id() == request.service_id();
   });
diff --git a/pw_rpc/server_test.cc b/pw_rpc/server_test.cc
index 6b5905d..7082772 100644
--- a/pw_rpc/server_test.cc
+++ b/pw_rpc/server_test.cc
@@ -76,15 +76,16 @@
   Server server_;
   TestService service_;
 
-  span<const byte> EncodeRequest(PacketType type,
-                                 uint32_t channel_id,
-                                 uint32_t service_id,
-                                 uint32_t method_id,
-                                 span<const byte> payload = kDefaultPayload) {
+  std::span<const byte> EncodeRequest(
+      PacketType type,
+      uint32_t channel_id,
+      uint32_t service_id,
+      uint32_t method_id,
+      std::span<const byte> payload = kDefaultPayload) {
     auto sws = Packet(type, channel_id, service_id, method_id, payload)
                    .Encode(request_buffer_);
     EXPECT_EQ(Status::OK, sws.status());
-    return span(request_buffer_, sws.size());
+    return std::span(request_buffer_, sws.size());
   }
 
  private:
diff --git a/pw_rpc/test_impl/public_overrides/pw_rpc/internal/method.h b/pw_rpc/test_impl/public_overrides/pw_rpc/internal/method.h
index 6c3beeb..297f14e 100644
--- a/pw_rpc/test_impl/public_overrides/pw_rpc/internal/method.h
+++ b/pw_rpc/test_impl/public_overrides/pw_rpc/internal/method.h
@@ -15,10 +15,10 @@
 
 #include <cstdint>
 #include <cstring>
+#include <span>
 
 #include "pw_rpc/internal/base_method.h"
 #include "pw_rpc/server_context.h"
-#include "pw_span/span.h"
 #include "pw_status/status_with_size.h"
 
 namespace pw::rpc::internal {
@@ -30,8 +30,8 @@
   constexpr Method(uint32_t id) : BaseMethod(id), last_channel_id_(0) {}
 
   StatusWithSize Invoke(ServerCall& call,
-                        span<const std::byte> request,
-                        span<std::byte> payload_buffer) const {
+                        std::span<const std::byte> request,
+                        std::span<std::byte> payload_buffer) const {
     last_channel_id_ = call.channel().id();
     last_request_ = request;
     last_payload_buffer_ = payload_buffer;
@@ -43,10 +43,12 @@
   }
 
   uint32_t last_channel_id() const { return last_channel_id_; }
-  span<const std::byte> last_request() const { return last_request_; }
-  span<std::byte> last_payload_buffer() const { return last_payload_buffer_; }
+  std::span<const std::byte> last_request() const { return last_request_; }
+  std::span<std::byte> last_payload_buffer() const {
+    return last_payload_buffer_;
+  }
 
-  void set_response(span<const std::byte> payload) { response_ = payload; }
+  void set_response(std::span<const std::byte> payload) { response_ = payload; }
   void set_status(Status status) { response_status_ = status; }
 
  private:
@@ -54,10 +56,10 @@
   // The Method class is used exclusively in tests. Having these members mutable
   // allows tests to verify that the Method is invoked correctly.
   mutable uint32_t last_channel_id_;
-  mutable span<const std::byte> last_request_;
-  mutable span<std::byte> last_payload_buffer_;
+  mutable std::span<const std::byte> last_request_;
+  mutable std::span<std::byte> last_payload_buffer_;
 
-  span<const std::byte> response_;
+  std::span<const std::byte> response_;
   Status response_status_;
 };