Skip to content

Commit 3001244

Browse files
committed
[SR-7076] Make ContiguousArray Codable
Implements Encodable and Decodable for ContiguousArray.
1 parent a820992 commit 3001244

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

stdlib/public/core/Codable.swift.gyb

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1767,6 +1767,41 @@ extension Array : Decodable where Element : Decodable {
17671767
}
17681768
}
17691769

1770+
extension ContiguousArray : Encodable where Element : Encodable {
1771+
/// Encodes the elements of this contiguous array into the given encoder
1772+
/// in an unkeyed container.
1773+
///
1774+
/// This function throws an error if any values are invalid for the given
1775+
/// encoder's format.
1776+
///
1777+
/// - Parameter encoder: The encoder to write data to.
1778+
@inlinable // FIXME(sil-serialize-all)
1779+
public func encode(to encoder: Encoder) throws {
1780+
var container = encoder.unkeyedContainer()
1781+
for element in self {
1782+
try container.encode(element)
1783+
}
1784+
}
1785+
}
1786+
1787+
extension ContiguousArray : Decodable where Element : Decodable {
1788+
/// Creates a new contiguous array by decoding from the given decoder.
1789+
///
1790+
/// This initializer throws an error if reading from the decoder fails, or
1791+
/// if the data read is corrupted or otherwise invalid.
1792+
///
1793+
/// - Parameter decoder: The decoder to read data from.
1794+
@inlinable // FIXME(sil-serialize-all)
1795+
public init(from decoder: Decoder) throws {
1796+
self.init()
1797+
var container = try decoder.unkeyedContainer()
1798+
while !container.isAtEnd {
1799+
let element = try container.decode(Element.self)
1800+
self.append(element)
1801+
}
1802+
}
1803+
}
1804+
17701805
extension Set : Encodable where Element : Encodable {
17711806
/// Encodes the elements of this set into the given encoder in an unkeyed
17721807
/// container.

0 commit comments

Comments
 (0)