At returns the rate for given timestamp or error. Rates MUST be sorted by start time.
(ts time.Time)
| 31 | // At returns the rate for given timestamp or error. |
| 32 | // Rates MUST be sorted by start time. |
| 33 | func (rr Rates) At(ts time.Time) (Rate, error) { |
| 34 | if i, ok := slices.BinarySearchFunc(rr, ts, func(r Rate, ts time.Time) int { |
| 35 | switch { |
| 36 | case ts.Before(r.Start): |
| 37 | return +1 |
| 38 | case !ts.Before(r.End): |
| 39 | return -1 |
| 40 | default: |
| 41 | return 0 |
| 42 | } |
| 43 | }); ok { |
| 44 | return rr[i], nil |
| 45 | } |
| 46 | |
| 47 | return Rate{}, ErrNotAvailable |
| 48 | } |
| 49 | |
| 50 | var _ BytesMarshaler = (*Rates)(nil) |
| 51 |
no outgoing calls