error: manual implementation of `str::repeat` using iterators
  --> tests/ui/manual_str_repeat.rs:8:21
   |
LL |     let _: String = std::iter::repeat("test").take(10).collect();
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"test".repeat(10)`
   |
   = note: `-D clippy::manual-str-repeat` implied by `-D warnings`
   = help: to override `-D warnings` add `#[allow(clippy::manual_str_repeat)]`

error: manual implementation of `str::repeat` using iterators
  --> tests/ui/manual_str_repeat.rs:10:21
   |
LL |     let _: String = std::iter::repeat('x').take(10).collect();
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"x".repeat(10)`

error: manual implementation of `str::repeat` using iterators
  --> tests/ui/manual_str_repeat.rs:12:21
   |
LL |     let _: String = std::iter::repeat('\'').take(10).collect();
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"'".repeat(10)`

error: manual implementation of `str::repeat` using iterators
  --> tests/ui/manual_str_repeat.rs:14:21
   |
LL |     let _: String = std::iter::repeat('"').take(10).collect();
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"\"".repeat(10)`

error: manual implementation of `str::repeat` using iterators
  --> tests/ui/manual_str_repeat.rs:19:13
   |
LL |     let _ = repeat(x).take(count + 2).collect::<String>();
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `x.repeat(count + 2)`

error: manual implementation of `str::repeat` using iterators
  --> tests/ui/manual_str_repeat.rs:29:21
   |
LL |     let _: String = repeat(*x).take(count).collect();
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(*x).repeat(count)`

error: manual implementation of `str::repeat` using iterators
  --> tests/ui/manual_str_repeat.rs:39:21
   |
LL |     let _: String = repeat(x).take(count).collect();
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `x.repeat(count)`

error: manual implementation of `str::repeat` using iterators
  --> tests/ui/manual_str_repeat.rs:52:21
   |
LL |     let _: String = repeat(Cow::Borrowed("test")).take(count).collect();
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Cow::Borrowed("test").repeat(count)`

error: manual implementation of `str::repeat` using iterators
  --> tests/ui/manual_str_repeat.rs:56:21
   |
LL |     let _: String = repeat(x).take(count).collect();
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `x.repeat(count)`

error: manual implementation of `str::repeat` using iterators
  --> tests/ui/manual_str_repeat.rs:72:21
   |
LL |     let _: String = std::iter::repeat("test").take(10).collect();
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"test".repeat(10)`

error: aborting due to 10 previous errors

