|
5 | 5 | [](https://github.com/draconware-dev/SpanExtensions.Net/blob/main/LICENSE) |
6 | 6 |
|
7 | 7 | ## About |
8 | | -**`ReadonlySpan<T>`** and **`Span<T>`** are great Types in _C#_, but unfortunately working with them can sometimes be sort of a hassle and some use cases seem straight up impossible, even though they are not. |
9 | 8 |
|
10 | | -**SpanExtensions.Net** aims to help developers use `ReadonlySpan<T>` and `Span<T>` more **productively**, **efficiently** and **safely** and write overall more **performant** Programs. |
11 | | - |
12 | | -Never again switch back to using `string` instead of `ReadonlySpan<T>`, just because the method you seek is not supported. |
13 | | - |
14 | | -**SpanExtensions.Net** provides alternatives for many missing Extension Methods for **`ReadonlySpan<T>`** and **`Span<T>`**, ranging from `string.Split()` over `Enumerable.Skip()` and `Enumerable.Take()` to an improved `ReadOnlySpan<T>.IndexOf()`. |
| 9 | +Never again switch back to using `string` instead of `ReadonlySpan<T>`, just because the method you seek is not supported. |
15 | 10 |
|
16 | | -## Methods |
17 | | -The following **Extension Methods** are contained: |
18 | | - |
19 | | -#### String Methods made available for **`ReadonlySpan<T>`** and **`Span<T>`**: |
20 | | - |
21 | | -- `(ReadOnly-)Span<T>.Split(T delimiter)` |
22 | | -- `(ReadOnly-)Span<T>.Split(T delimiter, int count)` |
23 | | -- `(ReadOnly-)Span<T>.Split(T delimiter, StringSplitOptions options)` |
24 | | -- `(ReadOnly-)Span<T>.Split(T delimiter, StringSplitOptions options, int count)` |
25 | | -- `(ReadOnly-)Span<T>.Split(ReadOnlySpan<T> delimiters)` |
26 | | -- `(ReadOnly-)Span<T>.Split(ReadOnlySpan<T> delimiters, int count)` |
27 | | -- `(ReadOnly-)Span<T>.Split(ReadOnlySpan<T> delimiters, StringSplitOptions options)` |
28 | | -- `(ReadOnly-)Span<T>.Split(ReadOnlySpan<T> delimiters, StringSplitOptions options, int count)` |
29 | | -- `(ReadOnly-)Span<T>.SplitAny(ReadOnlySpan<T> delimiters)` |
30 | | -- `(ReadOnly-)Span<T>.SplitAny(ReadOnlySpan<T> delimiters, int count)` |
31 | | -- `(ReadOnly-)Span<T>.SplitAny(ReadOnlySpan<T> delimiters, StringSplitOptions options)` |
32 | | -- `(ReadOnly-)Span<T>.SplitAny(ReadOnlySpan<T> delimiters, StringSplitOptions options, int count)` |
33 | | -- `(ReadOnly-)Span<T>.Remove(int startIndex)` |
34 | | -- `Span<T>.Replace(T oldT, T newT)` |
35 | | - |
36 | | -#### Linq Methods made available for **`ReadonlySpan<T>`** and **`Span<T>`**: |
37 | | - |
38 | | -- `(ReadOnly-)Span<T>.All(Predicate<T> predicate)` |
39 | | -- `(ReadOnly-)Span<T>.Any(Predicate<T> predicate)` |
40 | | -- `(ReadOnly-)Span<T>.Average()` |
41 | | -- `(ReadOnly-)Span<T>.Sum()` |
42 | | -- `(ReadOnly-)Span<T>.Skip(int count)` |
43 | | -- `(ReadOnly-)Span<T>.Take(int count)` |
44 | | -- `(ReadOnly-)Span<T>.SkipLast(int count)` |
45 | | -- `(ReadOnly-)Span<T>.Takelast(int count)` |
46 | | -- `(ReadOnly-)Span<T>.SkipWhile(Predicate<T> condition)` |
47 | | -- `(ReadOnly-)Span<T>.TakeWhile(Predicate<T> condition)` |
48 | | -- `(Readonly-)Span<T>.First()` |
49 | | -- `(Readonly-)Span<T>.First(Predicate<T> predicate)` |
50 | | -- `(Readonly-)Span<T>.FirstOrDefault()` |
51 | | -- `(Readonly-)Span<T>.FirstOrDefault(Predicate<T> predicate)` |
52 | | -- `(Readonly-)Span<T>.FirstOrDefault(T defaultValue)` |
53 | | -- `(Readonly-)Span<T>.FirstOrDefault(Predicate<T> predicate, T defaultValue)` |
54 | | -- `(Readonly-)Span<T>.Last()` |
55 | | -- `(Readonly-)Span<T>.Last(Predicate<T> predicate)` |
56 | | -- `(Readonly-)Span<T>.LastOrDefault()` |
57 | | -- `(Readonly-)Span<T>.LastOrDefault(Predicate<T> predicate)` |
58 | | -- `(Readonly-)Span<T>.LastOrDefault(T defaultValue)` |
59 | | -- `(Readonly-)Span<T>.LastOrDefault(Predicate<T> predicate, T defaultValue)` |
60 | | -- `(Readonly-)Span<T>.Single()` |
61 | | -- `(Readonly-)Span<T>.Single(Predicate<T> predicate)` |
62 | | -- `(Readonly-)Span<T>.SingleOrDefault()` |
63 | | -- `(Readonly-)Span<T>.SingleOrDefault(Predicate<T> predicate)` |
64 | | -- `(Readonly-)Span<T>.SingleOrDefault(T defaultValue)` |
65 | | -- `(Readonly-)Span<T>.SingleOrDefault(Predicate<T> predicate, T defaultValue)` |
66 | | -- `(Readonly-)Span<T>.ElementAt(int index)` |
67 | | -- `(Readonly-)Span<T>.ElementAt(Index index)` |
68 | | -- `(Readonly-)Span<T>.ElementAtOrDefault(int index)` |
69 | | -- `(Readonly-)Span<T>.ElementAtOrDefault(Index index)` |
70 | | -- `(Readonly-)Span<T>.ElementAtOrDefault(int index, T defaultValue)` |
71 | | -- `(Readonly-)Span<T>.ElementAtOrDefault(Index index, T defaultValue)` |
72 | | -- `(Readonly-)Span<T>.Min()` |
73 | | -- `(Readonly-)Span<T>.Min(Func<TSource, TResult> selector)` |
74 | | -- `(Readonly-)Span<T>.MinBy(Func<TSource, TKey> keySelector)` |
75 | | -- `(Readonly-)Span<T>.MinBy(Func<TSource, TKey> keySelector, IComparer<TKey> comparer)` |
76 | | -- `(Readonly-)Span<T>.Max()` |
77 | | -- `(Readonly-)Span<T>.Max(Func<TSource, TResult> selector)` |
78 | | -- `(Readonly-)Span<T>.MaxBy(Func<TSource, TKey> keySelector)` |
79 | | -- `(Readonly-)Span<T>.MaxBy(Func<TSource, TKey> keySelector, IComparer<TKey> comparer)` |
| 11 | +**SpanExtensions.Net** aims to help developers use `ReadonlySpan<T>` and `Span<T>` more **productively**, **efficiently** and **safely** and write overall more **performant** Programs. |
80 | 12 |
|
81 | 13 | ## Contributing |
82 | 14 |
|
83 | 15 | Thank you for your interest in contributing to this project - Please see [Contributing](CONTRIBUTING.md)! |
| 16 | + |
84 | 17 | ## License |
85 | 18 |
|
86 | | -Copyright (c) draconware-dev. All rights reserved. |
| 19 | +Copyright (c) draconware-dev. All rights reserved. |
87 | 20 |
|
88 | 21 | Licensed under the [MIT](../LICENSE) License. |
0 commit comments