Every lesson is written for you, from what you already know and what you got wrong last time. It hands you an assignment, runs your tests and reviews the code you actually wrote.
There is no lesson 7 that everyone gets. The coach reads its notes on you, re-tests the thing you got wrong last time, then writes today's lesson with runnable examples, and asks a quick check every few explanations so it knows the idea landed.
Coach
Length in bytes of the first word, or None if there is none. You reached for indexing last time; try a combinator.
fn first_word_len(text: &str) -> Option<usize> {
text.split_whitespace().next().map(str::len)
}Tests check that it works. Review checks that it's Rust: no unwrap, combinators over nested match, cargo fmt applied. When the build fails, each compiler error gets a plain-English explanation, and clippy's notes land in the gutter.
assertion `left == right` failed
left: Some("aL")
right: Some("AL")Every topic carries the coach's notes: what stuck, what needs re-testing, which habit keeps coming back. The next lesson is planned from them, mastery per chapter rises and falls with your answers, and review cards bring old topics back before they fade.
Taught the single-owner model and moves on assignment. Answered all three check questions; needed one correction on Copy vs Drop.
Derives Copy on his own types now. clone_from still untaught.
Passed all 9 tests first try. Re-test that he picks &mut [T] when the length is unchanged.
Hints puts a coach note next to each function: the API to reach for and the trap to avoid, never the answer. Trace runs a function through its test and shows every variable change, line by line. Both come with every account.
Small tools, each one for a moment where a video would leave you on your own.
Quick check
Which line moves s instead of borrowing it?
let t = &s;
Blet t = s;
Clet n = s.len();
Assigning a String to a new binding moves it; &s and a method call only borrow.
Every few explanations the coach asks one question. Click, see why, and the lesson picks up from your answer.
wordsline 9

WHATLine 8 handed words to next() by value, so by line 9 there is nothing left to borrow.
TRYLook at what an iterator's next takes: &mut self. The binding needs to allow that.
A failed build lists each rustc error and tints the line. One click explains, in plain English, what went wrong and what to try next. The fix stays yours.
Every test run also runs clippy. Each lint is a broom in the gutter with the message, the help and a link, and the review teaches the idiom behind one.
What does this print?
let a = String::from("hi");
let b = a.clone();
println!("{a} {b}");a moved
Bhi hi
Chi then a panic
clone makes a second String, so both bindings are still usable.
When a lesson ends, the coach writes two cards per topic it signed off. They come back at 1, 3, 7, 14, 30 and 60 days. A miss brings one back tomorrow.
Stretch challenge
Accepted. Now make initials work without to_ascii_uppercase allocating twice: one String, built once.
Solution accepted? One optional refactor. Extra credit, never part of the sign-off.
Some(3)
scratch.rs next to the assignment. cargo run in the same sandbox, nothing graded, saved between visits.
Coach
? on an Option returns None from the whole function, so these two lines are also the "fewer than two words" guard.
Select code, press one shortcut, and the coach explains it in the lesson.
A day counts when you chat, run tests or answer a card. Mastery rises with sign-offs and right answers, and falls with wrong ones.
Bindings before ownership, ownership before borrowing, borrowing before lifetimes. Each chapter ends when the coach signs it off, not when you finish reading.
No subscription. You buy credits once and they never expire. A typical lesson uses about one credit; a long conversation or a redo uses a bit more, a quick one less. Nothing is ever cut short.
$49 once, not $20 a month. Card payments via Stripe, plus VAT where it applies. Credits are non-refundable except where the law requires otherwise.
Last updated: 22 September 2026
1.1. rustcoach is operated by SOFTBERRIES Krzysztof Grajek, ul. Zagonowa 1/1, 82-300 Elbląg, Poland, VAT ID (NIP): PL5782712816 (the "Provider", "we").
1.2. You can contact us at support@rustcoach.dev or through the contact page.
1.3. These Terms of Service (the "Terms") are the regulations for services provided by electronic means within the meaning of article 8 of the Polish Act of 18 July 2002 on Providing Services by Electronic Means.
2.1. "Service": the rustcoach web application, an AI coach that teaches Rust in conversation, writes assignments, runs your tests in a sandbox and reviews your code.
2.2. "User" ("you"): any person who creates an account and uses the Service.
2.3. "Consumer": a User who is a natural person using the Service for purposes not directly related to their trade or profession. Where required by Polish law, provisions protecting Consumers also apply to a sole trader using the Service for purposes not of a professional character for them (przedsiębiorca na prawach konsumenta).
2.4. "Credit" and "credits": prepaid coaching on your account. One credit is a fixed amount of the coach's model time (section 6).
3.1. The Service offers lessons written for you by an AI coach, assignments verified by running your code, code review, quick checks, spaced review cards and a per-account syllabus with progress.
3.2. AI disclosure. The coach is an artificial-intelligence system, not a human. Its lessons, hints, explanations and reviews are generated by an AI language model. This notice is given in accordance with article 50 of Regulation (EU) 2024/1689 (the AI Act).
3.3. The coach may make mistakes. The Service is a learning aid; it does not provide certified instruction, examinations or qualifications.
4.1. You need a device with internet access and a current version of Chrome, Firefox, Safari or Edge, and an active email address.
4.2. The Service uses a strictly necessary session cookie, two short-lived cookies during Google sign-in, and local browser storage for editor preferences, as described in the Privacy Policy. No analytics or advertising trackers are used.
5.1. Using the Service requires an account created with an email address or via Google sign-in, and acceptance of these Terms.
5.2. The Service is intended for users aged 16 or older. By creating an account you confirm that you are at least 16.
5.3. You are responsible for keeping your credentials confidential and for activity on your account. One account per person; accounts are personal and non-transferable.
6.1. Coaching is prepaid. Every account starts with one free credit. More can be bought as one-time purchases:
6.2. Prices are stated in US dollars and exclude VAT; the price shown at checkout includes the VAT applicable to you.
6.3. One credit is $0.60 of the coach's metered model time at list prices; every reply, review, hint, trace and explanation the coach produces is metered against your credits as it happens. A typical lesson uses about one credit; a long conversation or a redo of a topic uses more, a quick one less. Nothing is cut short: a turn that starts with credit left always completes. The Account page shows what is left and every purchase.
6.4. Credits are tied to your account, cannot be transferred, resold or exchanged for cash, and stay usable for as long as the Service operates. When they run out, the coach pauses until you top up; nothing you did is lost. Free, promotional and goodwill credits have no cash value.
6.5. Payments are processed by Stripe. We do not store your card details. Receipts are issued through Stripe.
6.6. There is no subscription. Nothing renews and we never charge you without a purchase you make yourself.
7.1. A contract for the Service is concluded when you complete registration (free start) or when you complete a checkout for Credit.
7.2. The free contract is for an indefinite period. You may end it at any time by asking us to delete your account (section 13.4).
8.1. As a Consumer you may withdraw from a purchase within 14 days of it, without giving any reason.
8.2. To withdraw, send an unequivocal statement to support@rustcoach.dev, for example using the model withdrawal form in the Annex (you are not obliged to use the form). To meet the deadline it is enough to send the statement before it expires. We confirm receipt by email.
8.3. Immediate availability of Credit. Credit is added to your account the moment the purchase completes. By buying, you expressly request that we begin providing the service immediately, before the end of the withdrawal period, and you acknowledge that if you then withdraw, you pay for the part already used. If you withdraw, we refund the price paid minus a proportional amount for the credits used from that purchase, within 14 days, using the same payment method.
8.4. Free start. The right of withdrawal also applies to the free contract. Since nothing was paid, withdrawal is exercised by asking us to delete your account.
9.1. Credits are non-refundable, whether used or unused, except where the law requires otherwise: the consumer right of withdrawal in section 8, the statutory remedies for non-conformity in section 11, and any other right that mandatory consumer law gives you. Credits are not exchangeable for cash.
9.2. If you were charged in error or charged twice, write to us and we correct it. The refund policy repeats these rules in short form.
10.1. You must not supply unlawful content through the Service, including content that infringes third-party rights or is intended to harass or harm others.
10.2. You must not: (a) attempt to gain unauthorised access to the Service or its infrastructure, or to break out of the code sandbox; (b) mine cryptocurrency, attack other systems or run anything in the sandbox other than your assignment; (c) interfere with or disrupt the Service, including by automated bulk access, scraping or reselling access; (d) attempt to extract, reverse-engineer or misuse the underlying AI models; (e) share your account or automate the creation of accounts to obtain free Credit.
10.3. We may suspend or restrict an account that violates this section, after notifying you by email where reasonably possible, and may terminate the contract for material or repeated violations (section 12.3).
11.1. We are liable to Consumers for the conformity of the Service with the contract under the statutory regime for digital services in chapter 5b of the Polish Consumer Rights Act of 30 May 2014. If the Service does not conform with the contract, you may demand that it be brought into conformity and, on the statutory conditions, demand a price reduction or withdraw from the contract.
11.2. Complaints can be submitted to support@rustcoach.dev or through the contact page. Please describe the problem, your account email and, where relevant, the lesson concerned.
11.3. We respond to Consumer complaints within 14 days of receipt. If we do not respond within that time, the complaint is deemed accepted.
12.1. Changes. rustcoach is a small service and it will keep changing. We may add, change or remove features, models, syllabus content and limits. Changes that reduce what your existing Credit buys are announced by email at least 14 days before they take effect.
12.2. Closing the Service. We may discontinue the Service, in whole or in part, at any time, including because running it is no longer viable. If we shut the Service down we give at least 30 days' notice by email, during which you can keep using your Credit and ask for a copy of your data. Unused Credit is not refunded on closure except where mandatory law requires it; free, promotional and goodwill Credit is never refunded.
12.3. Termination by us. We may terminate the contract without notice for material or repeated breaches of section 10, after the suspension procedure in 10.3 where appropriate. Unused Credit on an account terminated for breach is not refunded.
12.4. Inactive accounts. An account with no activity for three years may be closed after an email notice sent 30 days in advance; any Credit left on it is then forfeited.
13.1. The Service, including its software, design and course material, is protected by the intellectual-property rights of the Provider or its licensors. Do not copy, scrape or resell it.
13.2. Code you write stays yours. You grant us only the licence technically necessary to provide the Service: storing your code and lesson conversations, running your tests and sending your code to the AI model for review, as described in the Privacy Policy.
13.3. AI-generated lessons, hints and reviews are provided for your personal learning use.
13.4. You may delete your account at any time from the Account page (or by email to support@rustcoach.dev). The account is signed out at once and permanently deleted 30 days later; signing in during those 30 days cancels the deletion. Deleting your account ends the contract, and any unused credits are forfeited with it, subject to your right of withdrawal in section 8 for purchases made in the previous 14 days.
14.1. Nothing in these Terms excludes or limits liability that cannot be excluded or limited under applicable law, including the Provider's liability toward Consumers and toward sole traders using the Service on consumer terms, and liability for damage caused intentionally, which is never excluded.
14.2. We are not liable for interruptions or degraded quality caused by force majeure, failures of third-party networks or AI providers, your internet connection, or your equipment not meeting section 4.
14.3. We may carry out scheduled maintenance, announced in advance where reasonably possible. Maintenance does not consume your Credit.
14.4. Non-consumers only. Toward Users who are not Consumers (and not sole traders on consumer terms): (a) our total liability under the contract is limited to the amounts you paid us in the 12 months preceding the event giving rise to the claim; and (b) we are not liable for lost profits. These limits do not apply to damage caused intentionally.
15.1. We may change these Terms for valid reasons, such as changes in law, changes to the Service's features, security needs, or changes to prices or third-party costs.
15.2. We notify you of changes by email at least 14 days before they take effect, indicating the effective date. The app also asks you to accept the new version before you continue using it.
15.3. If you do not accept the changes, you may terminate the contract before the effective date by asking us to delete your account; credits bought within the previous 14 days are refunded under section 8. Price changes never affect credits you already hold.
16.1. If we reject a Consumer complaint, we state in our response whether we agree to take part in out-of-court dispute resolution (ADR) proceedings and, if so, identify the competent ADR entity.
16.2. Consumers in Poland may, among other options, seek assistance from the Voivodeship Inspectorate of Trade Inspection (Wojewódzki Inspektorat Inspekcji Handlowej) competent for their place of residence and from the municipal or district consumer ombudsman (miejski/powiatowy rzecznik konsumentów). These options are voluntary for both parties.
17.1. These Terms are governed by Polish law. If you are a Consumer, this choice of law does not deprive you of the protection afforded by mandatory consumer-protection provisions of the law of the country of your habitual residence (article 6 of Regulation (EC) No 593/2008, Rome I).
17.2. Disputes with Consumers are resolved by the courts having jurisdiction under generally applicable law. For non-consumers, the court competent for the Provider's seat has jurisdiction.
18.1. How we process personal data is set out in the Privacy Policy, which forms part of the pre-contractual information but not of the contract terms.
18.2. These Terms are provided in English, free of charge, before contract conclusion, in a form allowing storage and reproduction (this page can be saved or printed). If any provision is found invalid, the remaining provisions remain in force.
(complete and return this form only if you wish to withdraw from the contract)
To: SOFTBERRIES Krzysztof Grajek, ul. Zagonowa 1/1, 82-300 Elbląg, Poland, email:
support@rustcoach.dev
I/We(*) hereby give notice that I/We(*) withdraw from my/our(*) contract for the supply of
the following service: rustcoach Credit (purchase: ……………, date: ……………)
Name of the consumer(s): ……………
Address of the consumer(s): ……………
Account email address: ……………
Signature of the consumer(s) (only if this form is notified on paper): ……………
Date: ……………
(*) Delete as appropriate.
Last updated: 22 September 2026
1.1. The controller of your personal data is SOFTBERRIES Krzysztof Grajek, ul. Zagonowa 1/1, 82-300 Elbląg, Poland, VAT ID (NIP): PL5782712816.
1.2. Contact for all privacy matters: support@rustcoach.dev.
1.3. This policy explains how we process personal data when you use rustcoach, an AI Rust coach ("Service"). Terms defined in the Terms of Service have the same meaning here.
2.1. Account data: email address, optional name, password hash (or Google account identifier if you sign in with Google), account creation date, which version of the Terms you accepted, and your reminder-email preference.
2.2. Learning data: lesson conversations with the coach, assignments and the code you write and submit, test and lint output, quick-check answers, review cards and answers, the coach's syllabus notes and mastery estimates about your progress, and the days on which you were active.
2.3. Usage and Credit data: token counts and metered cost per coach turn, and the ledger of credits granted, bought and adjusted. Your balance is computed from these.
2.4. Billing data: your Stripe customer id and a record of each purchase (product, amount, Stripe session id). Payment and invoice records are held by Stripe; we never see your full card details.
2.5. Email log: which account emails and reminders we sent you and when, so no email is sent twice.
2.6. Contact form: the name, email address and message you send us.
2.7. Technical data: the session cookie, and server logs (including IP addresses) kept for security, rate limiting and troubleshooting.
| Purpose | Data | Legal basis |
|---|---|---|
| Providing the Service: generating lessons, hints, explanations and reviews with the AI model, running your code, tracking progress | learning data, account data | Contract performance, art. 6(1)(b) GDPR |
| Account management, login, Credit accounting | account, usage and Credit data | Contract performance, art. 6(1)(b) GDPR |
| Invoicing, tax and accounting records | billing data | Legal obligation, art. 6(1)(c) GDPR |
| Security, abuse and fraud prevention, rate limiting, troubleshooting | technical data | Legitimate interest, art. 6(1)(f) GDPR |
| Reminder emails about your own learning (service-related, not marketing) | email address, email log | Legitimate interest, art. 6(1)(f) GDPR, with opt-out (section 6) |
| Answering contact-form messages, complaints, withdrawal requests and legal claims | contact-form data, account and billing data, correspondence | Legal obligation and legitimate interest, art. 6(1)(c) and (f) GDPR |
3.1. The coach adapts lessons to what you have learned. This is content personalisation with no legal or similarly significant effect on you. We carry out no automated decision-making within the meaning of art. 22 GDPR.
We share data only with the processors needed to run the Service:
| Processor | Role | Location | Transfer mechanism |
|---|---|---|---|
| Anthropic | AI model: lesson conversations and submitted code are sent to the Claude API to generate the coach's replies and reviews | US | Standard Contractual Clauses (SCCs) |
| Stripe | Payments, receipts, VAT | US | EU-US Data Privacy Framework |
| Sign in with Google (OAuth) only | US | EU-US Data Privacy Framework | |
| Brevo | Account emails, reminders, delivery of contact-form messages | EU (France) | n/a (EU) |
| OVHcloud (OVH Hosting Inc.) | Application hosting: server, database and code sandbox | Canada (Beauharnois, Québec) | EU adequacy decision for Canada (Commission Decision 2002/2/EC) |
4.1. Copies of the relevant safeguards can be requested at support@rustcoach.dev. We do not sell personal data and do not share it with advertisers.
| Data | Retention |
|---|---|
| Account data, learning data, usage and credit ledger, email log | until account deletion (30 days after your request), plus up to 30 days in backups |
| Payment records (held by Stripe) | 5 full tax years, as required by Polish tax law |
| Contact-form messages | up to 12 months in our support mailbox, longer only while a complaint or claim is open |
| Server logs | up to 30 days |
6.1. We send occasional reminder emails about your own learning: an open lesson, review cards piling up, a quiet few weeks. These are service-related messages, not marketing, sent on the basis of our legitimate interest in supporting your use of the Service, never more than one every three days.
6.2. Reminders are enabled by default. You can turn them off at any time with the switch on the Account page or the one-click link in every reminder email. Account emails (verification, password reset, receipts, running-low notices) are not affected.
7.1. We use only strictly necessary storage: rc_session, the sign-in
cookie, lifetime 30 days; rc_oauth_state and rc_terms, two
cookies that live 10 minutes during a Google sign-in; and local browser storage for editor
preferences (pane sizes, whether hints and traces were shown, the file you had open) and
for the onboarding tour state.
7.2. We use no analytics, no advertising and no third-party tracking cookies, so no cookie consent banner is required.
7.3. During checkout you are redirected to stripe.com, where Stripe sets its own cookies under its own policy: https://stripe.com/cookies-policy/legal.
8.1. Under the GDPR you have the right to: access your data; rectification; erasure; restriction of processing; data portability; and to object to processing based on legitimate interest (including reminder emails, section 6).
8.2. To exercise any right, email support@rustcoach.dev or use the contact page. We respond within one month (extendable by two months for complex requests, with notice).
8.3. Account deletion: delete your account from the Account page, or ask us by email from the address on your account. The account is signed out at once and, after a 30-day grace period during which signing in restores it, permanently erased: email, name, password, Google sign-in link, lessons, messages, code, usage and credit records. Payment records stay with Stripe as long as tax law requires (section 5). Backups are purged within a further 30 days.
8.4. Complaint to a supervisory authority: you may lodge a complaint with the President of the Personal Data Protection Office (Prezes UODO), ul. Stawki 2, 00-193 Warszawa, Poland, uodo.gov.pl, or with the supervisory authority of your habitual residence.
9.1. The Service is intended for users aged 16 or older. We do not knowingly process data of children under 16. If you believe a child under 16 has created an account, contact us and we will delete it.
10.1. We apply technical and organisational measures appropriate to the risk, including encrypted transmission (TLS), hashed passwords, access controls, rate limiting, and running your code in an isolated sandbox with no network access.
11.1. We may update this policy, for example when we change processors or features. We notify account holders of material changes by email at least 14 days before they take effect. The current version is always available in the Service.
Last updated: 22 September 2026. The short form of sections 8, 9 and 12 of the Terms of Service, which prevail.
If you are a consumer you can withdraw from any purchase within 14 days of making it, no reason needed. Because credit is available immediately, you asked us at checkout to start right away; we therefore refund the price minus a proportional amount for the credits you used from that purchase, within 14 days, to the original payment method. Send us a plain statement, or the model form at the end of the Terms, from the address on your account.
Credits are non-refundable, used or unused, except where the law requires otherwise. They stay on your account and never expire. If you were charged in error or charged twice, write to us and we correct it. If the service does not work as promised, the complaints procedure below applies. An account closed for breaking the terms is not refunded, and free, promotional or goodwill credits are never refunded.
If something did not work as promised, tell us: we answer consumer complaints within 14 days, and if we do not, the complaint counts as accepted.
Email support@rustcoach.dev from the address on your account, or use the contact page, with the purchase date and amount. Refunds go back to the original payment method via Stripe, usually within 5 to 10 business days.
SOFTBERRIES Krzysztof Grajek, ul. Zagonowa 1/1, 82-300 Elbląg, Poland, VAT ID (NIP): PL5782712816.
A person reads every message. Expect an answer within two working days.
Billing, refunds, a bug, a lesson that went wrong, or a question about your data: write it below. The reply goes to the address on your account. No account, or locked out of it? Email support@rustcoach.dev directly.
Assignment
This is your first assignment, and it may use things the lesson has not covered yet: loops, if conditions, matching, or a method you have not met. That is fine. If you do not know how to write something in Rust yet, ask in the lesson chat, for example "how do I loop over a vector?". The coach explains it there, without giving away the solution.
Run tests to see results here.
