├── 9781484234679.jpg ├── Contributing.md ├── LICENSE.txt ├── README.md ├── errata.md ├── sources_unix ├── 01-01.rs ├── 01-02.rs ├── 01-03.rs ├── 01-04.rs ├── 01-05.c ├── 01-06.rs ├── 01-07.rs ├── 01-08.rs ├── 01-09.rs ├── 01-10.rs ├── 01-11.rs ├── 01-12.rs ├── 01-13.rs ├── 01-14.rs ├── 01-15.rs ├── 01-16.sh ├── 01-17.bat ├── 01-18.rs ├── 01-19.rs ├── 02-01.rs ├── 02-02.rs ├── 02-03.rs ├── 02-04.rs ├── 02-05.rs ├── 02-06.rs ├── 02-07.rs ├── 02-08.rs ├── 02-09.rs ├── 02-10.rs ├── 02-11.rs ├── 02-12.rs ├── 02-13.rs ├── 02-14.rs ├── 02-15.rs ├── 02-16.rs ├── 03-01.rs ├── 03-02.rs ├── 03-03.rs ├── 03-04.c ├── 03-05.c ├── 03-06.rs ├── 03-07.rs ├── 03-08.rs ├── 03-09.rs ├── 03-10.rs ├── 03-11.rs ├── 03-12.rs ├── 03-13.rs ├── 03-14.rs ├── 03-15.rs ├── 03-16.rs ├── 03-17.rs ├── 03-18.rs ├── 03-19.rs ├── 03-20.rs ├── 03-21.rs ├── 03-22.rs ├── 03-23.rs ├── 03-24.rs ├── 03-25.rs ├── 03-26.rs ├── 03-27.rs ├── 03-28.rs ├── 03-29.rs ├── 03-30.rs ├── 03-31.rs ├── 03-32.rs ├── 04-01.rs ├── 04-02.rs ├── 04-03.rs ├── 04-04.rs ├── 04-05.rs ├── 04-06.c ├── 04-07.rs ├── 04-08.rs ├── 04-09.rs ├── 04-10.rs ├── 04-11.rs ├── 04-12.rs ├── 04-13.rs ├── 04-14.rs ├── 04-15.rs ├── 04-16.rs ├── 04-17.rs ├── 04-18.c ├── 04-19.rs ├── 04-20.rs ├── 04-21.rs ├── 04-22.rs ├── 04-23.rs ├── 05-01.rs ├── 05-02.rs ├── 05-03.rs ├── 05-04.rs ├── 05-05.rs ├── 05-06.rs ├── 05-07.rs ├── 05-08.rs ├── 05-09.rs ├── 05-10.rs ├── 05-11.rs ├── 05-12.rs ├── 05-13.rs ├── 05-14.rs ├── 05-15.rs ├── 05-16.rs ├── 05-17.rs ├── 05-18.rs ├── 05-19.rs ├── 05-20.rs ├── 05-21.rs ├── 05-22.rs ├── 05-23.rs ├── 05-24.rs ├── 05-25.rs ├── 05-26.rs ├── 05-27.rs ├── 05-28.rs ├── 05-29.rs ├── 05-30.rs ├── 05-31.rs ├── 05-32.rs ├── 05-33.rs ├── 05-34.rs ├── 06-01.rs ├── 06-02.rs ├── 06-03.rs ├── 06-04.rs ├── 06-05.rs ├── 06-06.rs ├── 06-07.rs ├── 06-08.rs ├── 06-09.rs ├── 06-10.rs ├── 06-11.rs ├── 06-12.rs ├── 06-13.rs ├── 06-14.rs ├── 06-15.rs ├── 06-16.rs ├── 06-17.rs ├── 06-18.rs ├── 06-19.rs ├── 06-20.rs ├── 06-21.rs ├── 06-22.rs ├── 06-23.rs ├── 06-24.rs ├── 06-25.rs ├── 06-26.rs ├── 06-27.rs ├── 06-28.rs ├── 06-29.rs ├── 06-30.rs ├── 06-31.rs ├── 06-32.rs ├── 06-33.rs ├── 06-34.rs ├── 06-35.rs ├── 07-01.rs ├── 07-02.rs ├── 07-03.rs ├── 07-04.rs ├── 07-05.rs ├── 07-06.rs ├── 07-07.rs ├── 07-08.rs ├── 07-09.rs ├── 07-10.rs ├── 07-11.rs ├── 07-12.rs ├── 07-13.rs ├── 07-14.rs ├── 07-15.rs ├── 07-16.rs ├── 07-17.c ├── 07-18.c ├── 07-19.rs ├── 07-20.rs ├── 07-21.rs ├── 08-01.rs ├── 08-02.rs ├── 08-03.rs ├── 08-04.rs ├── 08-05.rs ├── 08-06.rs ├── 08-07.rs ├── 08-08.c ├── 08-09.rs ├── 08-10.rs ├── 08-11.rs ├── 09-01.rs ├── 09-02.rs ├── 09-03.rs ├── 09-04.rs ├── 09-05.rs ├── 09-06.rs ├── 09-07.rs ├── 09-08.rs ├── 09-09.rs ├── 09-10.rs ├── 09-11.rs ├── 09-12.rs ├── 09-13.rs ├── 09-14.rs ├── 09-15.rs ├── 09-16.rs ├── 09-17.rs ├── 09-18.rs ├── 09-19.rs ├── 09-20.rs ├── 09-21.rs ├── 09-22.rs ├── 09-23.rs ├── 09-24.rs ├── 09-25.rs ├── 09-26.rs ├── 09-27.rs ├── 09-28.rs ├── 09-29.rs ├── 09-30.rs ├── 09-31.rs ├── 09-32.rs ├── 09-33.rs ├── 10-01.rs ├── 10-02.rs ├── 10-03.rs ├── 10-04.rs ├── 10-05.rs ├── 10-06.rs ├── 10-07.rs ├── 10-08.rs ├── 10-09.rs ├── 10-10.rs ├── 10-11.rs ├── 10-12.rs ├── 10-13.rs ├── 10-14.rs ├── 10-15.rs ├── 10-16.rs ├── 10-17.rs ├── 10-18.rs ├── 10-19.rs ├── 10-20.rs ├── 10-21.rs ├── 11-01.rs ├── 11-02.rs ├── 11-03.rs ├── 11-04.rs ├── 11-05.rs ├── 11-06.rs ├── 11-07.rs ├── 11-08.rs ├── 12-01.rs ├── 12-02.rs ├── 12-03.rs ├── 12-04.rs ├── 12-05.rs ├── 12-06.rs ├── 12-07.rs ├── 12-08.rs ├── 12-09.rs ├── 12-10.rs ├── 12-11.rs ├── 13-01.rs ├── 13-02.rs ├── 13-03.rs ├── 13-04.rs ├── 13-05.rs ├── 13-06.rs ├── 13-07.rs ├── 13-08.rs ├── 13-09.rs ├── 13-10.rs ├── 13-11.rs ├── 13-12.rs ├── 13-13.rs ├── 14-01.rs ├── 14-02.rs ├── 14-03.rs ├── 14-04.rs ├── 14-05.rs ├── 14-06.rs ├── 14-07.rs ├── 14-08.rs ├── 14-09.rs ├── 14-10.rs ├── 14-11.rs ├── 14-12.rs ├── 14-13.rs ├── 14-14.rs ├── 14-15.rs ├── 14-16.rs ├── 15-01.rs ├── 15-02.rs ├── 15-03.rs ├── 15-04.rs ├── 15-05.rs ├── 15-06.rs ├── 15-07.rs ├── 15-08.rs ├── 15-09.rs ├── 15-10.rs ├── 15-11.rs ├── 15-12.rs ├── 15-13.rs ├── 15-14.rs ├── 15-15.rs ├── 15-16.rs ├── 15-17.rs ├── 15-18.rs ├── 15-19.rs ├── 15-20.rs ├── 15-21.rs ├── 15-22.rs ├── 15-23.rs ├── 16-01.rs ├── 16-02.rs ├── 16-03.rs ├── 16-04.rs ├── 16-05.rs ├── 16-06.rs ├── 16-07.rs ├── 16-08.rs ├── 16-09.rs ├── 16-10.rs ├── 16-11.rs ├── 16-12.rs ├── 16-13.rs ├── 16-14.rs ├── 16-15.rs ├── 16-16.rs ├── 16-17.rs ├── 16-18.rs ├── 16-19.rs ├── 16-20.rs ├── 16-21.rs ├── 16-22.rs ├── 16-23.rs ├── 16-24.rs ├── 16-25.rs ├── 16-26.rs ├── 16-27.rs ├── 16-28.rs ├── 16-29.rs ├── 16-30.rs ├── 16-31.rs ├── 16-32.rs ├── 16-33.rs ├── 16-34.rs ├── 16-35.rs ├── 16-36.rs ├── 16-37.rs ├── 16-38.rs ├── 16-39.rs ├── 16-40.rs ├── 16-41.rs ├── 16-42.rs ├── 16-43.rs ├── 16-44.rs ├── 16-45.rs ├── 16-46.rs ├── 16-47.rs ├── 16-48.rs ├── 16-49.rs ├── 16-50.rs ├── 17-01.rs ├── 17-02.rs ├── 17-03.rs ├── 17-04.rs ├── 17-05.rs ├── 17-06.rs ├── 17-07.rs ├── 17-08.rs ├── 17-09.rs ├── 17-10.rs ├── 17-11.rs ├── 17-12.rs ├── 17-13.rs ├── 17-14.rs ├── 17-15.rs ├── 17-16.rs ├── 17-17.rs ├── 17-18.rs ├── 18-01.rs ├── 18-02.rs ├── 18-03.rs ├── 18-04.cpp ├── 18-05.cpp ├── 18-06.rs ├── 18-07.rs ├── 18-08.rs ├── 18-09.rs ├── 18-10.rs ├── 18-11.rs ├── 18-12.rs ├── 18-13.rs ├── 18-14.rs ├── 18-15.rs ├── 18-16.rs ├── 18-17.rs ├── 18-18.rs ├── 18-19.rs ├── 18-20.rs ├── 18-21.rs ├── 18-22.rs ├── 18-23.rs ├── 18-24.rs ├── 18-25.rs ├── 18-26.rs ├── 18-27.rs ├── 18-28.rs ├── 18-29.rs ├── 18-30.rs ├── 18-31.rs ├── 18-32.rs ├── 18-33.rs ├── 18-34.rs ├── 18-35.rs ├── 18-36.rs ├── 18-37.rs ├── 19-01.rs ├── 19-02.rs ├── 19-03.cpp ├── 19-04.rs ├── 19-05.rs ├── 19-06.rs ├── 19-07.rs ├── 19-08.rs ├── 19-09.rs ├── 19-10.rs ├── 19-11.rs ├── 19-12.rs ├── 19-13.cpp ├── 19-14.rs ├── 19-15.rs ├── 19-16.rs ├── 19-17.rs ├── 19-18.rs ├── 19-19.rs ├── 19-20.rs ├── 19-21.rs ├── 19-22.rs ├── 19-23.rs ├── 19-24.rs ├── 19-25.rs ├── 19-26.rs ├── 20-01.rs ├── 20-02.rs ├── 20-03.rs ├── 20-04.rs ├── 20-05.rs ├── 20-06.rs ├── 20-07.rs ├── 20-08.rs ├── 20-09.rs ├── 20-10.rs ├── 20-11.rs ├── 20-12.rs ├── 20-13.rs ├── 21-01.rs ├── 21-02.rs ├── 21-03.rs ├── 21-04.rs ├── 21-05.rs ├── 21-06.rs ├── 21-07.rs ├── 21-08.rs ├── 21-09.cpp ├── 21-10.rs ├── 21-11.rs ├── 21-12.cpp ├── 21-13.rs ├── 21-14.cpp ├── 21-15.rs ├── 21-16.cpp ├── 21-17.rs ├── 21-18.cpp ├── 21-19.rs ├── 21-20.rs ├── 21-21.rs ├── 21-22.rs ├── 21-23.rs ├── 21-24.rs ├── 21-25.rs ├── 21-26.rs ├── 21-27.rs ├── 21-28.rs ├── 21-29.rs ├── 21-30.rs ├── 21-31.rs ├── 22-01.rs ├── 22-02.rs ├── 22-03.rs ├── 22-04.rs ├── 22-05.rs ├── 22-06.c ├── 22-07.rs ├── 22-08.c ├── 22-09.cpp ├── 22-10.rs ├── 22-11.rs ├── 22-12.rs ├── 22-13.rs ├── 22-14.rs ├── 22-15.rs ├── 22-16.rs ├── 22-17.rs ├── 22-18.rs ├── 22-19.rs ├── 22-20.rs ├── 22-21.rs ├── 22-22.rs ├── 22-23.rs ├── 22-24.rs ├── 22-25.rs ├── 22-26.rs ├── 22-27.rs ├── 22-28.rs ├── 22-29.rs ├── 22-30.rs ├── 22-31.rs ├── 22-32.rs ├── 22-33.rs ├── 22-34.rs ├── 22-35.rs ├── 22-36.rs ├── 22-37.rs ├── 22-38.rs ├── 22-39.rs ├── 22-40.rs ├── 22-41.rs ├── 22-42.rs ├── 22-43.rs ├── 22-44.rs ├── 22-45.rs ├── 22-46.rs ├── 22-47.rs ├── 22-48.rs ├── 22-49.rs ├── 22-50.rs ├── 23-01.rs ├── 23-02.rs ├── 23-03.rs ├── 23-04.rs ├── 23-05.rs ├── 23-06.rs ├── 23-07.rs ├── 23-08.rs ├── 23-09.rs ├── 23-10.rs ├── 23-11.rs ├── 23-12.rs ├── 23-13.rs ├── 23-14.rs ├── 23-15.rs ├── 23-16.rs ├── 23-17.rs ├── 23-18.rs ├── 23-19.rs ├── 23-20.rs ├── 23-21.rs ├── 23-22.rs └── 23-23.rs └── sources_win ├── 01-01.rs ├── 01-02.rs ├── 01-03.rs ├── 01-04.rs ├── 01-05.c ├── 01-06.rs ├── 01-07.rs ├── 01-08.rs ├── 01-09.rs ├── 01-10.rs ├── 01-11.rs ├── 01-12.rs ├── 01-13.rs ├── 01-14.rs ├── 01-15.rs ├── 01-16.sh ├── 01-17.bat ├── 01-18.rs ├── 01-19.rs ├── 02-01.rs ├── 02-02.rs ├── 02-03.rs ├── 02-04.rs ├── 02-05.rs ├── 02-06.rs ├── 02-07.rs ├── 02-08.rs ├── 02-09.rs ├── 02-10.rs ├── 02-11.rs ├── 02-12.rs ├── 02-13.rs ├── 02-14.rs ├── 02-15.rs ├── 02-16.rs ├── 03-01.rs ├── 03-02.rs ├── 03-03.rs ├── 03-04.c ├── 03-05.c ├── 03-06.rs ├── 03-07.rs ├── 03-08.rs ├── 03-09.rs ├── 03-10.rs ├── 03-11.rs ├── 03-12.rs ├── 03-13.rs ├── 03-14.rs ├── 03-15.rs ├── 03-16.rs ├── 03-17.rs ├── 03-18.rs ├── 03-19.rs ├── 03-20.rs ├── 03-21.rs ├── 03-22.rs ├── 03-23.rs ├── 03-24.rs ├── 03-25.rs ├── 03-26.rs ├── 03-27.rs ├── 03-28.rs ├── 03-29.rs ├── 03-30.rs ├── 03-31.rs ├── 03-32.rs ├── 04-01.rs ├── 04-02.rs ├── 04-03.rs ├── 04-04.rs ├── 04-05.rs ├── 04-06.c ├── 04-07.rs ├── 04-08.rs ├── 04-09.rs ├── 04-10.rs ├── 04-11.rs ├── 04-12.rs ├── 04-13.rs ├── 04-14.rs ├── 04-15.rs ├── 04-16.rs ├── 04-17.rs ├── 04-18.c ├── 04-19.rs ├── 04-20.rs ├── 04-21.rs ├── 04-22.rs ├── 04-23.rs ├── 05-01.rs ├── 05-02.rs ├── 05-03.rs ├── 05-04.rs ├── 05-05.rs ├── 05-06.rs ├── 05-07.rs ├── 05-08.rs ├── 05-09.rs ├── 05-10.rs ├── 05-11.rs ├── 05-12.rs ├── 05-13.rs ├── 05-14.rs ├── 05-15.rs ├── 05-16.rs ├── 05-17.rs ├── 05-18.rs ├── 05-19.rs ├── 05-20.rs ├── 05-21.rs ├── 05-22.rs ├── 05-23.rs ├── 05-24.rs ├── 05-25.rs ├── 05-26.rs ├── 05-27.rs ├── 05-28.rs ├── 05-29.rs ├── 05-30.rs ├── 05-31.rs ├── 05-32.rs ├── 05-33.rs ├── 05-34.rs ├── 06-01.rs ├── 06-02.rs ├── 06-03.rs ├── 06-04.rs ├── 06-05.rs ├── 06-06.rs ├── 06-07.rs ├── 06-08.rs ├── 06-09.rs ├── 06-10.rs ├── 06-11.rs ├── 06-12.rs ├── 06-13.rs ├── 06-14.rs ├── 06-15.rs ├── 06-16.rs ├── 06-17.rs ├── 06-18.rs ├── 06-19.rs ├── 06-20.rs ├── 06-21.rs ├── 06-22.rs ├── 06-23.rs ├── 06-24.rs ├── 06-25.rs ├── 06-26.rs ├── 06-27.rs ├── 06-28.rs ├── 06-29.rs ├── 06-30.rs ├── 06-31.rs ├── 06-32.rs ├── 06-33.rs ├── 06-34.rs ├── 06-35.rs ├── 07-01.rs ├── 07-02.rs ├── 07-03.rs ├── 07-04.rs ├── 07-05.rs ├── 07-06.rs ├── 07-07.rs ├── 07-08.rs ├── 07-09.rs ├── 07-10.rs ├── 07-11.rs ├── 07-12.rs ├── 07-13.rs ├── 07-14.rs ├── 07-15.rs ├── 07-16.rs ├── 07-17.c ├── 07-18.c ├── 07-19.rs ├── 07-20.rs ├── 07-21.rs ├── 08-01.rs ├── 08-02.rs ├── 08-03.rs ├── 08-04.rs ├── 08-05.rs ├── 08-06.rs ├── 08-07.rs ├── 08-08.c ├── 08-09.rs ├── 08-10.rs ├── 08-11.rs ├── 09-01.rs ├── 09-02.rs ├── 09-03.rs ├── 09-04.rs ├── 09-05.rs ├── 09-06.rs ├── 09-07.rs ├── 09-08.rs ├── 09-09.rs ├── 09-10.rs ├── 09-11.rs ├── 09-12.rs ├── 09-13.rs ├── 09-14.rs ├── 09-15.rs ├── 09-16.rs ├── 09-17.rs ├── 09-18.rs ├── 09-19.rs ├── 09-20.rs ├── 09-21.rs ├── 09-22.rs ├── 09-23.rs ├── 09-24.rs ├── 09-25.rs ├── 09-26.rs ├── 09-27.rs ├── 09-28.rs ├── 09-29.rs ├── 09-30.rs ├── 09-31.rs ├── 09-32.rs ├── 09-33.rs ├── 10-01.rs ├── 10-02.rs ├── 10-03.rs ├── 10-04.rs ├── 10-05.rs ├── 10-06.rs ├── 10-07.rs ├── 10-08.rs ├── 10-09.rs ├── 10-10.rs ├── 10-11.rs ├── 10-12.rs ├── 10-13.rs ├── 10-14.rs ├── 10-15.rs ├── 10-16.rs ├── 10-17.rs ├── 10-18.rs ├── 10-19.rs ├── 10-20.rs ├── 10-21.rs ├── 11-01.rs ├── 11-02.rs ├── 11-03.rs ├── 11-04.rs ├── 11-05.rs ├── 11-06.rs ├── 11-07.rs ├── 11-08.rs ├── 12-01.rs ├── 12-02.rs ├── 12-03.rs ├── 12-04.rs ├── 12-05.rs ├── 12-06.rs ├── 12-07.rs ├── 12-08.rs ├── 12-09.rs ├── 12-10.rs ├── 12-11.rs ├── 13-01.rs ├── 13-02.rs ├── 13-03.rs ├── 13-04.rs ├── 13-05.rs ├── 13-06.rs ├── 13-07.rs ├── 13-08.rs ├── 13-09.rs ├── 13-10.rs ├── 13-11.rs ├── 13-12.rs ├── 13-13.rs ├── 14-01.rs ├── 14-02.rs ├── 14-03.rs ├── 14-04.rs ├── 14-05.rs ├── 14-06.rs ├── 14-07.rs ├── 14-08.rs ├── 14-09.rs ├── 14-10.rs ├── 14-11.rs ├── 14-12.rs ├── 14-13.rs ├── 14-14.rs ├── 14-15.rs ├── 14-16.rs ├── 15-01.rs ├── 15-02.rs ├── 15-03.rs ├── 15-04.rs ├── 15-05.rs ├── 15-06.rs ├── 15-07.rs ├── 15-08.rs ├── 15-09.rs ├── 15-10.rs ├── 15-11.rs ├── 15-12.rs ├── 15-13.rs ├── 15-14.rs ├── 15-15.rs ├── 15-16.rs ├── 15-17.rs ├── 15-18.rs ├── 15-19.rs ├── 15-20.rs ├── 15-21.rs ├── 15-22.rs ├── 15-23.rs ├── 16-01.rs ├── 16-02.rs ├── 16-03.rs ├── 16-04.rs ├── 16-05.rs ├── 16-06.rs ├── 16-07.rs ├── 16-08.rs ├── 16-09.rs ├── 16-10.rs ├── 16-11.rs ├── 16-12.rs ├── 16-13.rs ├── 16-14.rs ├── 16-15.rs ├── 16-16.rs ├── 16-17.rs ├── 16-18.rs ├── 16-19.rs ├── 16-20.rs ├── 16-21.rs ├── 16-22.rs ├── 16-23.rs ├── 16-24.rs ├── 16-25.rs ├── 16-26.rs ├── 16-27.rs ├── 16-28.rs ├── 16-29.rs ├── 16-30.rs ├── 16-31.rs ├── 16-32.rs ├── 16-33.rs ├── 16-34.rs ├── 16-35.rs ├── 16-36.rs ├── 16-37.rs ├── 16-38.rs ├── 16-39.rs ├── 16-40.rs ├── 16-41.rs ├── 16-42.rs ├── 16-43.rs ├── 16-44.rs ├── 16-45.rs ├── 16-46.rs ├── 16-47.rs ├── 16-48.rs ├── 16-49.rs ├── 16-50.rs ├── 17-01.rs ├── 17-02.rs ├── 17-03.rs ├── 17-04.rs ├── 17-05.rs ├── 17-06.rs ├── 17-07.rs ├── 17-08.rs ├── 17-09.rs ├── 17-10.rs ├── 17-11.rs ├── 17-12.rs ├── 17-13.rs ├── 17-14.rs ├── 17-15.rs ├── 17-16.rs ├── 17-17.rs ├── 17-18.rs ├── 18-01.rs ├── 18-02.rs ├── 18-03.rs ├── 18-04.cpp ├── 18-05.cpp ├── 18-06.rs ├── 18-07.rs ├── 18-08.rs ├── 18-09.rs ├── 18-10.rs ├── 18-11.rs ├── 18-12.rs ├── 18-13.rs ├── 18-14.rs ├── 18-15.rs ├── 18-16.rs ├── 18-17.rs ├── 18-18.rs ├── 18-19.rs ├── 18-20.rs ├── 18-21.rs ├── 18-22.rs ├── 18-23.rs ├── 18-24.rs ├── 18-25.rs ├── 18-26.rs ├── 18-27.rs ├── 18-28.rs ├── 18-29.rs ├── 18-30.rs ├── 18-31.rs ├── 18-32.rs ├── 18-33.rs ├── 18-34.rs ├── 18-35.rs ├── 18-36.rs ├── 18-37.rs ├── 19-01.rs ├── 19-02.rs ├── 19-03.cpp ├── 19-04.rs ├── 19-05.rs ├── 19-06.rs ├── 19-07.rs ├── 19-08.rs ├── 19-09.rs ├── 19-10.rs ├── 19-11.rs ├── 19-12.rs ├── 19-13.cpp ├── 19-14.rs ├── 19-15.rs ├── 19-16.rs ├── 19-17.rs ├── 19-18.rs ├── 19-19.rs ├── 19-20.rs ├── 19-21.rs ├── 19-22.rs ├── 19-23.rs ├── 19-24.rs ├── 19-25.rs ├── 19-26.rs ├── 20-01.rs ├── 20-02.rs ├── 20-03.rs ├── 20-04.rs ├── 20-05.rs ├── 20-06.rs ├── 20-07.rs ├── 20-08.rs ├── 20-09.rs ├── 20-10.rs ├── 20-11.rs ├── 20-12.rs ├── 20-13.rs ├── 21-01.rs ├── 21-02.rs ├── 21-03.rs ├── 21-04.rs ├── 21-05.rs ├── 21-06.rs ├── 21-07.rs ├── 21-08.rs ├── 21-09.cpp ├── 21-10.rs ├── 21-11.rs ├── 21-12.cpp ├── 21-13.rs ├── 21-14.cpp ├── 21-15.rs ├── 21-16.cpp ├── 21-17.rs ├── 21-18.cpp ├── 21-19.rs ├── 21-20.rs ├── 21-21.rs ├── 21-22.rs ├── 21-23.rs ├── 21-24.rs ├── 21-25.rs ├── 21-26.rs ├── 21-27.rs ├── 21-28.rs ├── 21-29.rs ├── 21-30.rs ├── 21-31.rs ├── 22-01.rs ├── 22-02.rs ├── 22-03.rs ├── 22-04.rs ├── 22-05.rs ├── 22-06.c ├── 22-07.rs ├── 22-08.c ├── 22-09.cpp ├── 22-10.rs ├── 22-11.rs ├── 22-12.rs ├── 22-13.rs ├── 22-14.rs ├── 22-15.rs ├── 22-16.rs ├── 22-17.rs ├── 22-18.rs ├── 22-19.rs ├── 22-20.rs ├── 22-21.rs ├── 22-22.rs ├── 22-23.rs ├── 22-24.rs ├── 22-25.rs ├── 22-26.rs ├── 22-27.rs ├── 22-28.rs ├── 22-29.rs ├── 22-30.rs ├── 22-31.rs ├── 22-32.rs ├── 22-33.rs ├── 22-34.rs ├── 22-35.rs ├── 22-36.rs ├── 22-37.rs ├── 22-38.rs ├── 22-39.rs ├── 22-40.rs ├── 22-41.rs ├── 22-42.rs ├── 22-43.rs ├── 22-44.rs ├── 22-45.rs ├── 22-46.rs ├── 22-47.rs ├── 22-48.rs ├── 22-49.rs ├── 22-50.rs ├── 23-01.rs ├── 23-02.rs ├── 23-03.rs ├── 23-04.rs ├── 23-05.rs ├── 23-06.rs ├── 23-07.rs ├── 23-08.rs ├── 23-09.rs ├── 23-10.rs ├── 23-11.rs ├── 23-12.rs ├── 23-13.rs ├── 23-14.rs ├── 23-15.rs ├── 23-16.rs ├── 23-17.rs ├── 23-18.rs ├── 23-19.rs ├── 23-20.rs ├── 23-21.rs ├── 23-22.rs └── 23-23.rs /9781484234679.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/beginning-rust/f250b68c5fad85e168359dc9615527664bd0f304/9781484234679.jpg -------------------------------------------------------------------------------- /sources_unix/01-01.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main(){} 3 | -------------------------------------------------------------------------------- /sources_unix/01-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello, world!*/ 3 | fn main() { 4 | print!("Hello, world!"); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/01-03.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn Main() {} 3 | -------------------------------------------------------------------------------- /sources_unix/01-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello, world!*/ 3 | fn main() { 4 | print!("{}, {}!", "Hello", "world"); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/01-05.c: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello, world!*/ 3 | #include 4 | int main() { 5 | printf("%s, %s!", "Hello", "world"); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/01-06.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | print!("{}, !", "Hello", "world"); 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/01-07.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | print!("{}, {}!", "Hello"); 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/01-08.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | First line 3 | Second line 4 | Third line 5 | */ 6 | fn main() { 7 | print!("First line\nSecond line\nThird line\n"); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/01-09.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | text of the line 3 | */ 4 | fn main() { 5 | println!("text of the line"); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/01-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | text of the line 3 | */ 4 | fn main() { 5 | print!("text of the line\n"); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/01-11.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | My number: 140*/ 3 | fn main() { 4 | print!("My number: 140"); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/01-12.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | My number: 140*/ 3 | fn main() { 4 | print!("My number: {}", "140"); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/01-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | My number: 140*/ 3 | fn main() { 4 | print!("My number: {}", 140); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/01-14.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | My number: 140*/ 3 | fn main() { 4 | print!("My number: {}", 000140); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/01-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | My number: 140*/ 3 | fn main() { 4 | print!("{}: {}", "My number", 140); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/01-16.sh: -------------------------------------------------------------------------------- 1 | clear 2 | rustc $* --color always 2>&1 | more 3 | -------------------------------------------------------------------------------- /sources_unix/01-17.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cls 3 | rustc %* --color always 2>&1 | more 4 | -------------------------------------------------------------------------------- /sources_unix/01-18.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 34*/ 3 | fn main() { 4 | // This program 5 | // prints a number. 6 | print!("{}", 34); // thirty-four 7 | /* print!("{}", 80); 8 | */ 9 | } 10 | 11 | -------------------------------------------------------------------------------- /sources_unix/01-19.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | /* This is /* a valid*/ 4 | comment, even /* if /* it contains 5 | comments*/ inside */itself. */ 6 | /* This /* instead is not allowed in Rust, 7 | while in C is tolerated (but it may generate a warning).*/ 8 | } 9 | 10 | -------------------------------------------------------------------------------- /sources_unix/02-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | The sum is 114.*/ 3 | fn main() { 4 | print!("The sum is {}.", 80 + 34); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/02-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 34 + 80 = 114*/ 3 | fn main() { 4 | print!("{} + {} = {}", 34, 80, 80 + 34); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/02-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 87*/ 3 | fn main() { 4 | print!("{}", (23 - 6) % 5 + 20 * 30 / (3 + 4)); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/02-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints 2 | The sum is 115.1*/ 3 | fn main() { 4 | print!("The sum is {}", 80.3 + 34.8); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/02-05.rs: -------------------------------------------------------------------------------- 1 | /* It prints 2 | The sum is 115.19999999999999*/ 3 | fn main() { 4 | print!("The sum is {}", 80.3 + 34.9); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/02-06.rs: -------------------------------------------------------------------------------- 1 | /* It prints 2 | 87.71428571428571*/ 3 | fn main() { 4 | print!("{}", (23. - 6.) % 5. + 20. * 30. / (3. + 4.)); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/02-07.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | print!("{}", 2.7 + 1); 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/02-08.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3.7*/ 3 | fn main() { 4 | print!("{}", 2.7 + 1.); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/02-09.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | -2 -0.19999999999999996*/ 3 | fn main() { 4 | print!("{} {}", -12 % 10, -1.2 % 1.); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/02-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 80 + 34 = 114*/ 3 | fn main() { 4 | print!("{} + ", 80); 5 | print!("{} =", 34); 6 | print!(" {}", 80 + 34); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/02-11.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 80 + 34 = 114*/ 3 | fn main() { 4 | print!("{} + ",80);print!("{} = ",34); 5 | print ! ( "{}" , 6 | 80 + 34 ) ; 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/02-12.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | println!("{}", "This" 4 | "is not allowed"); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/02-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | These 3 | are 4 | three lines 5 | */ 6 | fn main() { 7 | println!("{}", "These 8 | are 9 | three lines"); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/02-14.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | This is just one line 3 | */ 4 | fn main() { 5 | println!("{}", "This \ 6 | is \ 7 | just one line"); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/02-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | These 3 | are 4 | three lines 5 | */ 6 | fn main() { 7 | println!("{}", "These 8 | are 9 | three lines"); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/02-16.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | These 3 | are 4 | three lines 5 | */ 6 | fn main() { 7 | println!("{}", "These\n\ 8 | are\n\ 9 | three lines"); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/03-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 65*/ 3 | fn main() { 4 | let number = 12; 5 | let other_number = 53; 6 | print!("{}", number + other_number); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/03-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12 47*/ 3 | fn main() { 4 | let number = 12; 5 | print!("{} {}", number, 47); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/03-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12 53*/ 3 | fn main() { 4 | let mut number = 12; 5 | print!("{}", number); 6 | number = 53; 7 | print!(" {}", number); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/03-04.c: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 65*/ 3 | #include 4 | int main() { 5 | int const number = 12; 6 | int const other_number = 53; 7 | printf("%d", number + other_number); 8 | return 0; 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/03-05.c: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12 53*/ 3 | #include 4 | int main() { 5 | int number = 12; 6 | printf("%d", number); 7 | number = 53; 8 | printf(" %d", number); 9 | return 0; 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/03-06.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12 3 | */ 4 | fn main() { 5 | let mut number = 12; 6 | println!("{}", number); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/03-07.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12*/ 3 | fn main() { 4 | let number; 5 | number = 12; 6 | print!("{}", number); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/03-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let number; 4 | print!("{}", number); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/03-09.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 22*/ 3 | fn main() { 4 | let number1; 5 | let number2 = 22; 6 | number1 = number2; 7 | print!("{}", number1); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/03-10.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let number1; 4 | print!("{}", number1); 5 | number1 = 12; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/03-11.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let number; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/03-12.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let number = 12; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/03-13.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _number = 12; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/03-14.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _ = 12; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/03-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12*/ 3 | fn main() { 4 | let _number = 12; 5 | print!("{}", _number); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/03-16.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let _ = 12; 4 | print!("{}", _); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/03-17.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true false*/ 3 | fn main() { 4 | let truth = true; 5 | let falsity = false; 6 | print!("{} {}", truth, falsity); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/03-18.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true false true*/ 3 | fn main() { 4 | let truth = 5 > 2; 5 | let falsity = -12.3 >= 10.; 6 | print!("{} {} {}", truth, falsity, -50 < 6); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/03-19.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true true true*/ 3 | fn main() { 4 | print!("{} {} {}", "abc" < "abcd", "ab" < "ac", "A" < "a"); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/03-21.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true false*/ 3 | fn main() { 4 | print!("{} {}", true || true && ! true, 5 | (true || true) && ! true); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/03-22.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 2 3*/ 3 | fn main() { 4 | let mut n = 1; 5 | print!("{}", n); 6 | n = 2; 7 | print!(" {}", n); 8 | n = 3; 9 | print!(" {}", n); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/03-23.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut n = 1; 4 | print!("{}", n); 5 | n = 2; 6 | print!(" {}", n); 7 | n = 3.14; 8 | print!(" {}", n); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/03-24.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let number; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/03-25.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let number1 = 12; 4 | let _number2 = number1; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/03-26.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 2 3.14*/ 3 | fn main() { 4 | let mut n = 1.; 5 | print!("{}", n); 6 | n = 2.; 7 | print!(" {}", n); 8 | n = 3.14; 9 | print!(" {}", n); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/03-27.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 2 3.14*/ 3 | fn main() { 4 | let mut n = 1; 5 | print!("{}", n); 6 | n = 2; 7 | print!(" {}", n); 8 | let n = 3.14; 9 | print!(" {}", n); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/03-28.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut _n = 1; 4 | _n = 2; 5 | let _n = 3.14; 6 | _n = 5.9; 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/03-29.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 120 abcd true false*/ 3 | fn main() { 4 | let x = 120; print!("{} ", x); 5 | let x = "abcd"; print!("{} ", x); 6 | let mut x = true; print!("{} ", x); 7 | x = false; print!("{}", x); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/03-30.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10*/ 3 | fn main() { 4 | let mut a = 12; 5 | a = a + 1; 6 | a = a - 4; 7 | a = a * 7; 8 | a = a / 6; 9 | print!("{}", a); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/03-31.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10*/ 3 | fn main() { 4 | let mut a = 12; 5 | a += 1; 6 | a -= 4; 7 | a *= 7; 8 | a /= 6; 9 | print!("{}", a); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/03-32.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 5 5*/ 3 | fn main() { 4 | print!("{} {}", str::len("abcde"), "abcde".len()); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/04-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | positive*/ 3 | fn main() { 4 | let n = 4; 5 | if n > 0 { print!("positive"); } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/04-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | non positive*/ 3 | fn main() { 4 | let n = 0; 5 | if n > 0 { 6 | print!("number is"); 7 | print!(" positive"); 8 | } 9 | else { 10 | print!("non positive"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sources_unix/04-07.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let a = if true { "abc" }; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/04-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let a = if true { "abc" } else { 12 }; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/04-09.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _a = if true { "abc" } else { "xy" }; 4 | let _b = if true { 3456 } else { 12 }; 5 | let _c = if true { 56.9 } else { 12. }; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/04-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 4 9 16 25 36 49 64 81 100 */ 3 | fn main() { 4 | let mut i = 1; 5 | while i <= 10 { 6 | print!("{} ", i * i); 7 | i += 1; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/04-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 4 9 16 25 36 49 64 81 100 121 144 169 196 */ 3 | fn main() { 4 | let mut i = 1; 5 | while true { 6 | let ii = i * i; 7 | if ii >= 200 { break; } 8 | print!("{} ", ii); 9 | i += 1; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /sources_unix/04-14.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 4 9 16 25 36 49 64 81 100 121 144 169 196 */ 3 | fn main() { 4 | let mut i = 1; 5 | loop { 6 | let ii = i * i; 7 | if ii >= 200 { break; } 8 | print!("{} ", ii); 9 | i += 1; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /sources_unix/04-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 4 9 16 25 36 49 64 81 100 */ 3 | fn main() { 4 | for i in 1..11 { 5 | print!("{} ", i * i); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/04-16.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 1 2 3 :8*/ 3 | fn main() { 4 | let index = 8; 5 | for index in 0..4 { print!("{} ", index); } 6 | print!(":{}", index); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/04-17.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 2 3 :1*/ 3 | fn main() { 4 | let mut limit = 4; 5 | for i in 1..limit { 6 | limit -= 1; 7 | print!("{} ", i); 8 | } 9 | print!(":{}", limit); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/04-18.c: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 2 :2 */ 3 | #include 4 | int main() { 5 | int limit = 4; 6 | for (int i = 1; i < limit; i++) { 7 | limit -= 1; 8 | printf("%d ", i); 9 | } 10 | printf(":%d ", limit); 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /sources_unix/04-20.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | { let i = 10; } 4 | print!("{} ", i); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/04-21.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10 14*/ 3 | fn main() { 4 | let i = 10; 5 | { 6 | let j = 4; 7 | { 8 | print!("{} ", i); 9 | } 10 | print!("{}", i + j); 11 | } // End of the scope of "j" 12 | } // End of the scope of "i" 13 | -------------------------------------------------------------------------------- /sources_unix/04-22.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 10 */ 3 | fn main() { 4 | let i = 10; 5 | { 6 | let i = 4; 7 | print!("{} ", i); 8 | } // End of the scope of the second "i" 9 | print!("{} ", i); 10 | } // End of the scope of the first "i" 11 | -------------------------------------------------------------------------------- /sources_unix/04-23.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 0 */ 3 | fn main() { 4 | let mut _i = 1; 5 | if true { let _i = 2; } 6 | print!("{} ", _i); 7 | 8 | while _i > 0 { _i -= 1; let _i = 5; } 9 | print!("{} ", _i); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/05-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | This is a sentence in English*/ 3 | fn main() { 4 | let x = ["English", "This", "sentence", "a", "in", "is"]; 5 | print!("{} {} {} {} {} {}", 6 | x[1], x[5], x[3], x[2], x[4], x[0]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/05-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 2, 5.*/ 3 | fn main() { 4 | let a = [true, false]; 5 | let b = [1, 2, 3, 4, 5]; 6 | print!("{}, {}.", a.len(), b.len()); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/05-03.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let x = ["This", 4]; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/05-04.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let x = [4, 5.]; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/05-05.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut x = ["a"]; // array of strings 4 | x[0] = 3; 5 | x[-1] = "b"; 6 | x[0.] = "b"; 7 | x[false] = "b"; 8 | x["0"] = "b"; 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/05-06.rs: -------------------------------------------------------------------------------- 1 | // It panics at run-time. 2 | fn main() { 3 | let x = ["a"]; // array of strings 4 | let _y = x[1]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/05-07.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | This is a nice sentence.*/ 3 | fn main() { 4 | let mut x = ["This", "is", "a", "sentence"]; 5 | x[2] = "a nice"; 6 | print!("{} {} {} {}.", x[0], x[1], x[2], x[3]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/05-09.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut x = ["a", "b", "c"]; 4 | x = ["X", "Y"]; 5 | x = [15, 16, 17]; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/05-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4, 3.14*/ 3 | fn main() { 4 | let mut x = [4.; 5000]; 5 | x[2000] = 3.14; 6 | print!("{}, {}", x[1000], x[2000]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/05-12.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 23, 56*/ 3 | fn main() { 4 | let mut x = [[[[23; 4]; 6]; 8]; 15]; 5 | x[14][7][5][3] = 56; 6 | print!("{}, {}", x[0][0][0][0], x[14][7][5][3]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/05-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 15, 8, 6, 4.*/ 3 | fn main() { 4 | let x = [[[[0; 4]; 6]; 8]; 15]; 5 | print!("{}, {}, {}, {}.", 6 | x.len(), x[0].len(), x[0][0].len(), x[0][0][0].len()); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/05-14.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let length = 6; 4 | let arr = [0; length]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/05-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | This is. Length: 2.*/ 3 | fn main() { 4 | let x = vec!["This", "is"]; 5 | print!("{} {}. Length: {}.", x[0], x[1], x.len()); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/05-17.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3.14, 4, 4.89*/ 3 | fn main() { 4 | let length = 5000; 5 | let mut y = vec![4.; length]; 6 | y[6] = 3.14; 7 | y.push(4.89); 8 | print!("{}, {}, {}", y[6], y[4999], y[5000]); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/05-18.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut _x = vec!["a", "b", "c"]; 4 | _x = vec!["X", "Y"]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/05-19.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut _x = vec!["a", "b", "c"]; 4 | _x = vec![15, 16, 17]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/05-21.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut _x = vec!["This", "is", "a", "sentence"]; 4 | _x.insert("line", 1); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/05-22.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut _x = vec![12, 13, 14, 15]; 4 | _x.insert(3, 1); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/05-23.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | f(["help", "debug"], vec![0, 4, 15]); 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/05-24.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | f([], vec![]); 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/05-25.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let _a = []; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/05-26.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _a = [""; 0]; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/05-27.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _a = vec![true; 0]; 4 | let _b = vec![false; 0]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/05-28.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | f([""; 0], vec![0; 0]); 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/05-29.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | print!("{} {}", [1, 2, 3], vec![4, 5]); 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/05-30.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [1, 2, 3] [4, 5]*/ 3 | fn main() { 4 | print!("{:?} {:?}", [1, 2, 3], vec![4, 5]); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/05-31.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [4, 56, -2] [7, 81, 12500]*/ 3 | fn main() { 4 | let mut a1 = [4, 56, -2]; 5 | let a2 = [7, 81, 12500]; 6 | print!("{:?} ", a1); 7 | a1 = a2; 8 | print!("{:?}", a1); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/05-32.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [4, 56, -2] [7, 81, 12500]*/ 3 | fn main() { 4 | let mut a1 = vec![4, 56, -2]; 5 | let a2 = vec![7, 81, 12500]; 6 | print!("{:?} ", a1); 7 | a1 = a2; 8 | print!("{:?}", a1); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/05-33.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a1 = [4, 56, -2]; 4 | let a2 = [7, 81]; 5 | print!("{:?} ", a1); 6 | a1 = a2; 7 | print!("{:?}", a1); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/05-34.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [4, 56, -2] [7, 81]*/ 3 | fn main() { 4 | let mut a1 = vec![4, 56, -2]; 5 | let a2 = vec![7, 81]; 6 | print!("{:?} ", a1); 7 | a1 = a2; 8 | print!("{:?}", a1); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/06-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 16 10 8 2*/ 3 | fn main() { 4 | let hexadecimal = 0x10; 5 | let decimal = 10; 6 | let octal = 0o10; 7 | let binary = 0b10; 8 | print!("{} {} {} {}", 9 | hexadecimal, decimal, octal, binary); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/06-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10 256*/ 3 | fn main() { 4 | print!("{} {}", 0xA, 0b100000000); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/06-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10 256*/ 3 | fn main() { 4 | print!("{} {}", 10, 256); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/06-06.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let one_thousand = 1e3; 4 | let one_million = 1e6; 5 | let thirteen_billions_and_half = 13.5e9; 6 | let twelve_millionths = 12e-6; 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/06-07.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 5 5 5 5*/ 3 | fn main() { 4 | let a: i8 = 5; 5 | let b: i16 = 5; 6 | let c: i32 = 5; 7 | let d: i64 = 5; 8 | print!("{} {} {} {}", a, b, c, d); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/06-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let a: i8 = 5; 4 | let b: i16 = 5; 5 | print!("{}", a + b); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/06-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 5 5 5 5*/ 3 | fn main() { 4 | let a: u8 = 5; 5 | let b: u16 = 5; 6 | let c: u32 = 5; 7 | let d: u64 = 5; 8 | print!("{} {} {} {}", a, b, c, d); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/06-11.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 33*/ 3 | fn main() { 4 | let arr = [11, 22, 33]; 5 | let i: usize = 2; 6 | print!("{}", arr[i]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/06-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0*/ 3 | fn main() { 4 | let a = [0]; 5 | let i = 0; 6 | print!("{}", a[i]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/06-14.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let i = 0; 4 | let _j: u16 = i; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/06-15.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let i = 0; 4 | let _j: u16 = i; 5 | let _k: i16 = i; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/06-16.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let i = 0; 4 | let _j: u16 = i; 5 | let _k = i; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/06-17.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 8 -589934592*/ 3 | fn main() { 4 | let i = 8; 5 | let j = 8_000_000_000; 6 | print!("{} {}", i, j); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/06-18.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4.6 3.91*/ 3 | fn main() { 4 | let a: f64 = 4.6; 5 | let b: f32 = 3.91; 6 | print!("{} {}", a, b); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/06-19.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let a = 4.6; 4 | let mut _b: f32 = 3.91e5; 5 | _b = a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/06-20.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 19*/ 3 | fn main() { 4 | let a: i16 = 12; 5 | let b: u32 = 4; 6 | let c: f32 = 3.7; 7 | print!("{}", a as i8 + b as i8 + c as i8); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/06-21.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | -12 34464 1410065408*/ 3 | fn main() { 4 | let a = 500 as i8; 5 | let b = 100_000 as u16; 6 | let c = 10_000_000_000 as u32; 7 | print!("{} {} {}", a, b, c); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/06-22.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _a: i16 = -150; 4 | let _b = -150 as i16; 5 | let _c = -150 + _b - _b; 6 | let _d = -150i16; 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/06-24.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [true][a]*/ 3 | fn main() { 4 | let a: bool = true; print!("[{}]", a); 5 | let b: char = 'a'; print!("[{}]", b); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/06-25.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | è さ 3 | */ 4 | fn main() { 5 | let e_grave = 'è'; 6 | let japanese_character = 'さ'; 7 | println!("{} {}", e_grave, japanese_character); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/06-26.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let _a = 'a' + 'b'; 4 | let _b = false + true; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/06-27.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 0 65 224 8364*/ 3 | fn main() { 4 | print!("{} {} {} {} {}", true as u8, false as u8, 5 | 'A' as u32, 'à' as u32, '€' as u32); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/06-28.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true false A à*/ 3 | fn main() { 4 | let truthy = 1; 5 | let falsy = 0; 6 | print!("{} {} {} {}", truthy != 0, falsy != 0, 7 | 65 as char, 224 as char); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/06-31.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _array1: [char; 3] = ['x', 'y', 'z']; 4 | let _array2: [f32; 200] = [0f32; 200]; 5 | let _vector1: Vec = vec!['x', 'y', 'z']; 6 | let _vector2: Vec = vec![0; 5000]; 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/06-32.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let n = 20; 4 | let _ = [0; n]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/06-33.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | const N: usize = 20; 4 | let _ = [0; N]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/06-34.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let _: bool = 4u32 / 3u32; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/06-35.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let _: bool = 4 / 3; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/07-03.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | enum T {A, B, C, D}; 4 | let n: i32 = T::D; 5 | let e: T = 1; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/07-04.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | enum CardinalPoint { North, South, West, East }; 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/07-05.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let a = 7.2; 4 | 12; 5 | true; 6 | 4 > 7; 7 | 5.7 + 5. * a; 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/07-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | enum CardinalPoint { North, South, West, East }; 4 | let direction = CardinalPoint::South; 5 | if direction == CardinalPoint::North { } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/07-09.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | enum CardinalPoint { North, South, West, East }; 4 | if CardinalPoint::South < CardinalPoint::North { } 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/07-10.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | enum CardinalPoint { North, South, West, East }; 4 | let direction = CardinalPoint::South; 5 | match direction { 6 | CardinalPoint::North => print!("NORTH"), 7 | CardinalPoint::South => print!("SOUTH"), 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/08-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10000000, 183.19, Q*/ 3 | fn main() { 4 | let data = (10000000, 183.19, 'Q'); 5 | let copy_of_data = data; 6 | print!("{}, {}, {}", 7 | data.0, copy_of_data.1, data.2); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/08-02.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let data: (i32, f64, char) = (10000000, 183.19, 'Q'); 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/08-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | -5, 183.19, x*/ 3 | fn main() { 4 | let mut data = (10000000, 183.19, 'Q'); 5 | data.0 = -5; 6 | data.2 = 'x'; 7 | print!("{}, {}, {}", data.0, data.1, data.2); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/08-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | */ 3 | fn main() { 4 | let array = [12, 13, 14]; 5 | let tuple = (12, 13, 14); 6 | let i = 0; 7 | print!("{}", array[i]); 8 | print!("{}", tuple.i); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/08-05.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3*/ 3 | fn main() { 4 | let data = (10, 'x', 12, 183.19, 'Q', false, -9); 5 | print!("{}", data.2 + data.6); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/08-06.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let data1 = (10, 'x', 12, 183.19, 'Q', false, -9); 4 | let mut data2: (u16, char, i16, f64, bool, char, i16); 5 | data2 = data1; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/09-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | ---------- 3 | ---------- 4 | ---------- 5 | */ 6 | fn main() { 7 | fn line() { 8 | println!("----------"); 9 | } 10 | line(); 11 | line(); 12 | line(); 13 | } 14 | -------------------------------------------------------------------------------- /sources_unix/09-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1212*/ 3 | fn f1() { print!("1"); } 4 | fn main() { 5 | f1(); 6 | fn f2() { print!("2"); } 7 | f2(); f1(); f2(); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/09-03.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | a; 4 | let a = 3; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/09-04.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | f(); 4 | fn f() {} 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/09-05.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f() {} 4 | fn f() {} 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/09-06.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | aab*/ 3 | fn main() { 4 | { 5 | fn f() { print!("a"); } 6 | f(); f(); 7 | } 8 | { 9 | fn f() { print!("b"); } 10 | f(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sources_unix/09-07.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | { 4 | fn f() { } 5 | } 6 | f(); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/09-08.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 232*/ 3 | fn f() { print!("1"); } 4 | fn main() { 5 | f(); // Prints 2 6 | { 7 | f(); // Prints 3 8 | fn f() { print!("3"); } 9 | } 10 | f(); // Prints 2 11 | fn f() { print!("2"); } 12 | } 13 | -------------------------------------------------------------------------------- /sources_unix/09-11.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f(a: i16) {} 4 | f(3.); 5 | f(3u16); 6 | f(3i16); 7 | f(3); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/09-12.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 8 4*/ 3 | fn main() { 4 | fn print_double(mut x: f64) { 5 | x *= 2.; 6 | print!("{}", x); 7 | } 8 | let x = 4.; 9 | print_double(x); 10 | print!(" {}", x); 11 | } 12 | -------------------------------------------------------------------------------- /sources_unix/09-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 34.6*/ 3 | fn main() { 4 | fn double(x: f64) -> f64 { x * 2. } 5 | print!("{}", double(17.3)); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/09-14.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f1(x: i32) {} 4 | fn f2(x: i32) -> () {} 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/09-15.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f1() -> i32 { 4.5; "abc"; 73i32 } 4 | fn f2() -> i32 { 4.5; "abc"; 73 } 5 | fn f3() -> i32 { 4.5; "abc"; 73 + 100 } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/09-16.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f1() -> i32 { 4.5; "abc"; false } 4 | fn f2() -> i32 { 4.5; "abc"; () } 5 | fn f3() -> i32 { 4.5; "abc"; {} } 6 | fn f4() -> i32 { 4.5; "abc"; } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/09-17.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 0*/ 3 | fn main() { 4 | fn f(x: f64) -> f64 { 5 | if x <= 0. { return 0.; } 6 | x + 3. 7 | } 8 | print!("{} {}", f(1.), f(-1.)); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/09-18.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 0*/ 3 | fn main() { 4 | fn f(x: f64) -> f64 { 5 | if x <= 0. { return 0.; } 6 | return x + 3.; 7 | } 8 | print!("{} {}", f(1.), f(-1.)); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/09-19.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 0*/ 3 | fn main() { 4 | fn f(x: f64) -> f64 { 5 | if x <= 0. { 0. } 6 | else { x + 3. } 7 | } 8 | print!("{} {}", f(1.), f(-1.)); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/09-20.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 5*/ 3 | fn main() { 4 | fn f(x: i32) { 5 | if x <= 0 { return; } 6 | if x == 4 { return (); } 7 | if x == 7 { return {}; } 8 | print!("{}", x); 9 | } 10 | f(5); 11 | } 12 | -------------------------------------------------------------------------------- /sources_unix/09-21.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f() -> i32 { 3 } 4 | f(); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/09-22.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f() -> i32 { 3 } 4 | let _a: i32 = f(); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/09-23.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f() -> i32 { 3 } 4 | let _a: u32 = f(); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/09-24.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | (4, 6)*/ 3 | fn main() { 4 | fn divide(dividend: i32, divisor: i32) -> (i32, i32) { 5 | (dividend / divisor, dividend % divisor) 6 | } 7 | print!("{:?}", divide(50, 11)); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/09-26.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [5, -8, 9, 0, -14, -2, 3, 5, 3, 1]*/ 3 | fn main() { 4 | let mut arr = [5, -4, 9, 0, -7, -1, 3, 5, 3, 1]; 5 | for i in 0..10 { 6 | if arr[i] < 0 { arr[i] *= 2; } 7 | } 8 | print!("{:?}", arr); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/09-31.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 15 15 15*/ 3 | fn main() { 4 | let a = 15; 5 | let ref_a = &a; 6 | print!("{} {} {}", a, *ref_a, ref_a); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/09-32.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 7 7 7 7*/ 3 | fn main() { 4 | let a = &&&7; 5 | print!("{} {} {} {}", ***a, **a, *a, a); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/10-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 37*/ 3 | fn main() { 4 | // Library code 5 | fn f(ch: char, num1: i16, num2: i16) -> i16 { 6 | if ch == 'a' { num1 } 7 | else { num2 } 8 | } 9 | 10 | // Application code 11 | print!("{}", f('a', 37, 41)); 12 | } 13 | -------------------------------------------------------------------------------- /sources_unix/10-04.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f(a: T, _b: T) -> T { a } 4 | let _a = f(12u8, 13u8); 5 | let _b = f(12i64, 13i64); 6 | let _c = f(12i16, 13u16); 7 | let _d: i32 = f(12i16, 13i16); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/10-05.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f(_a: Param1, _b: Param2) {} 4 | f('a', true); 5 | f(12.56, "Hello"); 6 | f((3, 'a'), [5, 6, 7]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/10-08.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | (4, 3) (true, 5)*/ 3 | fn main() { 4 | fn swap(a: T1, b: T2) -> (T2, T1) { (b, a) } 5 | let x = swap(3i16, 4u16); 6 | let y = swap(5f32, true); 7 | print!("{:?} {:?}", x, y); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/10-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | (4.5, 'A') (-6, 'g')*/ 3 | fn main() { 4 | fn swap(a: T1, b: T2) -> (T2, T1) { (b, a) } 5 | let x = swap('A', 4.5); 6 | let y = swap('g', -6.); 7 | print!("{:?} {:?}", x, y); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/10-11.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | (4.5, 'A') (-6, 'g')*/ 3 | fn main() { 4 | fn swap_char_f64(a: char, b: f64) -> (f64, char) { (b, a) } 5 | let x = swap_char_f64('A', 4.5); 6 | let y = swap_char_f64('g', -6.); 7 | print!("{:?} {:?}", x, y); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/10-15.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | enum Option { 4 | Some(T), 5 | None, 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/10-16.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | enum Optional { 4 | Something(T), 5 | Nothing, 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/10-18.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | enum Result { 4 | Ok(T), 5 | Err(E), 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/10-21.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 33, 22, 11, */ 3 | fn main() { 4 | let mut v = vec![11, 22, 33]; 5 | for _ in 0..v.len() { 6 | print!("{}, ", v.pop().unwrap()) 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/11-01.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | static _A: u32 = 3; 4 | static _B: i32 = -1_000_000; 5 | static _C: f64 = 5.7e10; 6 | static _D: u8 = 200; 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/11-02.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _a: u32 = 3; 4 | let _b: i32 = -1_000_000; 5 | let _c: f64 = 5.7e10; 6 | let _d: u8 = 200; 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/11-03.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f1(x1: i32) { 4 | let y1 = 2 + x1; 5 | } 6 | fn f2(x2: i32) { 7 | f1(x2 + 7); 8 | } 9 | let k = 20; 10 | f1(k + 4); 11 | f2(30); 12 | } 13 | -------------------------------------------------------------------------------- /sources_unix/12-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 4 */ 3 | fn main() { 4 | print!("{} ", std::mem::size_of::()); 5 | print!("{} ", std::mem::size_of_val(&12)); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/12-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 4 */ 3 | fn main() { 4 | use std::mem; 5 | print!("{} ", mem::size_of::()); 6 | print!("{} ", mem::size_of_val(&12)); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/12-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 4 */ 3 | fn main() { 4 | use std::mem::size_of; 5 | use std::mem::size_of_val; 6 | print!("{} ", size_of::()); 7 | print!("{} ", size_of_val(&12)); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/12-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 4 */ 3 | fn main() { 4 | use std::mem::*; 5 | print!("{} ", size_of::()); 6 | print!("{} ", size_of_val(&12)); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/13-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [0, 1, 4, 7, 8, 10, 12, 45]*/ 3 | fn main() { 4 | let mut arr = [4, 8, 1, 10, 0, 45, 12, 7]; 5 | arr.sort(); 6 | print!("{:?}", arr); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/13-03.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | enum Ordering { Less, Equal, Greater } 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/13-04.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let two = 2.; 4 | fn print_double(x: f64) { 5 | print!("{}", x * two); 6 | } 7 | print_double(17.2); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/13-05.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 34.4*/ 3 | fn main() { 4 | const TWO: f64 = 2.; 5 | fn print_double(x: f64) { 6 | print!("{}", x * TWO); 7 | } 8 | print_double(17.2); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/13-06.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 34.4*/ 3 | fn main() { 4 | static TWO: f64 = 2.; 5 | fn print_double(x: f64) { 6 | print!("{}", x * TWO); 7 | } 8 | print_double(17.2); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/13-09.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [0, 1, 4, 7, 8, 10, 12, 45]*/ 3 | fn main() { 4 | let mut arr = [4, 8, 1, 10, 0, 45, 12, 7]; 5 | arr.sort_by(|a, b| a.cmp(b)); 6 | print!("{:?}", arr); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/13-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [45, 12, 10, 8, 7, 4, 1, 0]*/ 3 | fn main() { 4 | let mut arr = [4, 8, 1, 10, 0, 45, 12, 7]; 5 | arr.sort_by(|a, b| (&-*a).cmp(&-*b)); 6 | print!("{:?}", arr); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/13-11.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [45, 12, 10, 8, 7, 4, 1, 0]*/ 3 | fn main() { 4 | let mut arr = [4, 8, 1, 10, 0, 45, 12, 7]; 5 | arr.sort_by(|a, b| b.cmp(a)); 6 | print!("{:?}", arr); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/14-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello*/ 3 | fn main() { 4 | let mut a = "Hel"; 5 | print!("{}", a); 6 | a = "lo"; 7 | print!("{}", a); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/14-03.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let a: str; 4 | fn f(a: str) {} 5 | print!("{}", std::mem::size_of::()); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/14-05.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello*/ 3 | fn main() { 4 | let mut a: String = "He".to_string(); 5 | a.push('l'); 6 | a.push('l'); 7 | a.push('o'); 8 | print!("{}", a); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/14-06.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hi*/ 3 | fn main() { 4 | let mut a: String = "Xy".to_string(); // "Xy" 5 | a.remove(0); // "y" 6 | a.insert(0, 'H'); // "Hy" 7 | a.pop(); // "H" 8 | a.push('i'); // "Hi" 9 | print!("{}", a); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/14-09.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | ()*/ 3 | fn main() { 4 | let s1 = String::new(); 5 | let s2 = String::from(""); 6 | let s3 = "".to_string(); 7 | let s4 = "".to_owned(); 8 | let s5 = format!(""); 9 | print!("({}{}{}{}{})", s1, s2, s3, s4, s5); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/14-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello, world!*/ 3 | fn main() { 4 | let mut dyn_str = "Hello".to_string(); 5 | dyn_str.push_str(", "); 6 | dyn_str.push_str("world"); 7 | dyn_str.push_str("!"); 8 | print!("{}", dyn_str); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/14-14.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello, world!*/ 3 | fn main() { 4 | let mut dyn_str = "Hello".to_string(); 5 | dyn_str += ", "; 6 | dyn_str += "world"; 7 | dyn_str += "!"; 8 | print!("{}", dyn_str); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/14-16.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | bye bye*/ 3 | fn main() { 4 | let word = "bye".to_string(); 5 | let w1: &str = &word; 6 | let w2: &String = &word; 7 | print!("{} {}", w1, w2); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/15-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 3 | 1 4 | 2 5 | 3 6 | 4 7 | 5 8 | 6 9 | 7 10 | 8 11 | 9 12 | 10 13 | 11 14 | */ 15 | fn main() { 16 | for i in 0..12 { println!("{}", i); } 17 | } 18 | -------------------------------------------------------------------------------- /sources_unix/15-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 3 | 1 4 | 2 5 | 3 6 | 4 7 | 5 8 | 6 9 | 7 10 | 8 11 | 9 12 | 10 13 | 11 14 | */ 15 | fn main() { 16 | let dozen = 0..12; 17 | for i in dozen { println!("{}", i); } 18 | } 19 | -------------------------------------------------------------------------------- /sources_unix/15-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3..8, 3, 8, 5 3 | 3, 4, 5, 6, 7, */ 4 | fn main() { 5 | let range: std::ops::Range = 3..8; 6 | println!("{:?}, {}, {}, {}", 7 | range, range.start, range.end, range.len()); 8 | for i in range { print!("{}, ", i); } 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/15-05.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let r1 = 3u8..12i8; 4 | let r2: std::ops::Range = -3..12; 5 | let r3: std::ops::Range = 3i16..12; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/15-06.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _r1 = 3u8..1200; 4 | let _r2 = 3..5_000_000_000; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/15-07.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _r1 = false .. true; 4 | let _r2 = "hello" .. "world"; 5 | let _r3 = 4.2 .. 7.9; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/15-16.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let arr = [55, 22, 33, 44, 66]; 4 | let _r1 = 4..4; let _a1 = &arr[_r1]; 5 | let _r2 = 4..3; //let _a2 = &arr[_r2]; 6 | let _r3 = -3i32..2; //let _a3 = &arr[_r3]; 7 | let _r4 = 3..8; //let _a4 = &arr[_r4]; 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/15-19.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [11, 22] [33, 44]*/ 3 | fn main() { 4 | let arr = [11, 22, 33, 44]; 5 | let n = 2; 6 | let sr1 = &arr[0..n]; 7 | let sr2 = &arr[n..arr.len()]; 8 | print!("{:?} {:?}", sr1, sr2); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/15-20.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [11, 22] [33, 44]*/ 3 | fn main() { 4 | let arr = [11, 22, 33, 44]; 5 | let n = 2; 6 | let sr1 = &arr[..n]; 7 | let sr2 = &arr[n..]; 8 | print!("{:?} {:?}", sr1, sr2); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/15-22.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3 4 5 6 */ 3 | fn main() { 4 | for i in 3.. { 5 | if i * i > 40 { break; } 6 | print!("{} ", i); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/15-23.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 [11, 22, 33, 44] [11, 22, 33, 44]*/ 3 | fn main() { 4 | let range: std::ops::RangeFull = ..; 5 | let a1 = [11, 22, 33, 44]; 6 | let a2 = &a1[range]; 7 | print!("{} {:?} {:?}", std::mem::size_of_val(&range), a1, a2); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/16-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | €: 8364 3 | è: 232 4 | e: 101 5 | */ 6 | fn main() { 7 | fn print_codes(s: &str) { 8 | for c in s.chars() { 9 | println!("{}: {}", c, c as u32); 10 | } 11 | } 12 | print_codes("€èe"); 13 | } 14 | -------------------------------------------------------------------------------- /sources_unix/16-06.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 226 130 172 195 168 101 */ 3 | fn main() { 4 | for byte in "€èe".bytes() { 5 | print!("{} ", byte); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/16-07.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 226 130 172 195 168 101 */ 3 | fn main() { 4 | let string: &str = "€èe"; 5 | let string_it: std::str::Bytes = string.bytes(); 6 | for byte in string_it { 7 | print!("{} ", byte); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/16-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 226 130 172 195 168 101 */ 3 | fn main() { 4 | for byte in "€èe".bytes() { 5 | print!("{} ", byte); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/16-11.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 226 130 172 195 168 101 */ 3 | fn main() { 4 | for byte in "€èe".as_bytes().iter() { 5 | print!("{} ", byte); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/16-12.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | a X; b X; c X; */ 3 | fn main() { 4 | let mut r = "abc".chars(); 5 | for i in r { 6 | r = "XY".chars(); 7 | print!("{} {}; ", i, r.next().unwrap()); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/16-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10 11 12 13 14 */ 3 | fn main() { 4 | let r = 0..5; 5 | for mut i in r { 6 | i += 10; 7 | print!("{} ", i); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/16-15.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut slice = &mut [3, 4, 5]; 4 | { 5 | let mut iterator = slice.iter(); 6 | for mut item_ref in iterator { 7 | *item_ref += 1; 8 | } 9 | } 10 | print!("{:?}", slice); 11 | } 12 | -------------------------------------------------------------------------------- /sources_unix/16-16.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [4, 5, 6]*/ 3 | fn main() { 4 | let slice = &mut [3, 4, 5]; 5 | { 6 | let iterator = slice.iter_mut(); 7 | for item_ref in iterator { 8 | *item_ref += 1; 9 | } 10 | } 11 | print!("{:?}", slice); 12 | } 13 | -------------------------------------------------------------------------------- /sources_unix/16-21.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | -8 -31 */ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | for n in arr.iter() { 6 | if *n < 0 { print!("{} ", n); } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/16-22.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | -8 -31 */ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | for n in arr.iter().filter(|x| **x < 0) { 6 | print!("{} ", n); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/16-23.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 132 -16 86 38 0 -62 */ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | for n in arr.iter() { 6 | print!("{} ", n * 2); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/16-24.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 132 -16 86 38 0 -62 */ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | for n in arr.iter().map(|x| *x * 2) { 6 | print!("{} ", n); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/16-25.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 a, 1 b, 2 c, */ 3 | fn main() { 4 | let arr = ['a', 'b', 'c']; 5 | for i in 0..arr.len() { 6 | print!("{} {}, ", i, arr[i]); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/16-26.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | a, b, c, */ 3 | fn main() { 4 | let arr = ['a', 'b', 'c']; 5 | for ch in arr.iter() { 6 | print!("{}, ", ch); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/16-27.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 a, 1 b, 2 c, */ 3 | fn main() { 4 | let arr = ['a', 'b', 'c']; 5 | let mut i = 0; 6 | for ch in arr.iter() { 7 | print!("{} {}, ", i, *ch); 8 | i += 1; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/16-28.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 a, 1 b, 2 c, */ 3 | fn main() { 4 | let arr = ['a', 'b', 'c']; 5 | for (i, ch) in arr.iter().enumerate() { 6 | print!("{} {}, ", i, *ch); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/16-32.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | false true */ 3 | fn main() { 4 | print!("{} ", 5 | [45, 8, 2, 6].iter().any(|n| *n < 0)); 6 | print!("{} ", 7 | [45, 8, -2, 6].iter().any(|n| *n < 0)); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/16-33.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | false true */ 3 | fn main() { 4 | print!("{} ", [45, 8, 2, 6].iter() 5 | .any(|n: &i32| -> bool { *n < 0 })); 6 | print!("{} ", [45, 8, -2, 6].iter() 7 | .any(|n: &i32| -> bool { *n < 0 })); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/16-34.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true false */ 3 | fn main() { 4 | print!("{} ", [45, 8, 2, 6].iter() 5 | .all(|n: &i32| -> bool { *n > 0 })); 6 | print!("{} ", [45, 8, -2, 6].iter() 7 | .all(|n: &i32| -> bool { *n > 0 })); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/16-35.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3 6*/ 3 | fn main() { 4 | let s = "€èe"; 5 | print!("{} {}", s.chars().count(), s.len()); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/16-36.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 57*/ 3 | fn main() { 4 | print!("{}", [45, 8, -2, 6].iter().sum::()); 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/16-37.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 57*/ 3 | fn main() { 4 | let s: i32 = [45, 8, -2, 6].iter().sum(); 5 | print!("{}", s); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/16-38.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0*/ 3 | fn main() { 4 | let s: u32 = [].iter().sum(); 5 | print!("{}", s); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/16-41.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [36, 1, 15, 9, 4]*/ 3 | fn main() { 4 | let arr = [36, 1, 15, 9, 4]; 5 | let v = arr.iter().collect::>(); 6 | print!("{:?}", v); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/16-42.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [36, 1, 15, 9, 4]*/ 3 | fn main() { 4 | let arr = [36, 1, 15, 9, 4]; 5 | let v = arr.iter().collect::>(); 6 | print!("{:?}", v); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/16-43.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [36, 1, 15, 9, 4]*/ 3 | fn main() { 4 | let arr = [36, 1, 15, 9, 4]; 5 | let v: Vec<_> = arr.iter().collect(); 6 | print!("{:?}", v); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/16-45.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [132, 86, 38]*/ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | let mut v = vec![]; 6 | for i in 0..arr.len() { 7 | if arr[i] > 0 { v.push(arr[i] * 2); } 8 | } 9 | print!("{:?}", v); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/16-46.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [132, 86, 38]*/ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | let mut v = vec![]; 6 | for n in arr.iter() { 7 | if *n > 0 { v.push(*n * 2); } 8 | } 9 | print!("{:?}", v); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/16-48.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [132, 86, 38]*/ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | let v = arr 6 | .iter() 7 | .filter(|x| **x > 0) 8 | .map(|x| *x * 2) 9 | .collect::>(); 10 | print!("{:?}", v); 11 | } 12 | -------------------------------------------------------------------------------- /sources_unix/16-50.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | [66, -8, 43, 19, 0, -31] 4 | .iter() 5 | .filter(|x| { print!("F{} ", x); **x > 0 }) 6 | .map(|x| { print!("M{} ", x); *x * 2 }); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/17-02.rs: -------------------------------------------------------------------------------- 1 | // It prints the path used to run the program, 2 | // and all its command-line arguments, 3 | // each one enclosed in square brackets. 4 | fn main() { 5 | for a in std::env::args() { 6 | println!("[{}]", a); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/17-03.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | std::process::exit(107); 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/17-04.rs: -------------------------------------------------------------------------------- 1 | // It prints the list of current environment variables. 2 | fn main() { 3 | for var in std::env::vars() { 4 | println!("[{}]=[{}]", var.0, var.1); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/17-05.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [Err(NotPresent)] [Ok("This is the value")]*/ 3 | fn main() { 4 | print!("[{:?}]", std::env::var("abcd")); 5 | std::env::set_var("abcd", "This is the value"); 6 | print!(" [{:?}]", std::env::var("abcd")); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/17-14.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 45 4.5 true*/ 3 | fn main() { 4 | let int_str: String = 45.to_string(); 5 | let float_str: String = 4.5.to_string(); 6 | let bool_str: String = true.to_string(); 7 | print!("{} {} {}", int_str, float_str, bool_str); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/18-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 100.00000000000003 3.1622776601683795*/ 3 | fn main() { 4 | fn quartic_root(x: f64) -> f64 { x.sqrt().sqrt() } 5 | let qr = quartic_root(100f64); 6 | print!("{} {}", qr * qr * qr * qr, qr); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/18-03.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn quartic_root(x: Number) -> Number { 4 | x.sqrt().sqrt() 5 | } 6 | print!("{} {}", 7 | quartic_root(100f64), 8 | quartic_root(100f32)); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/18-05.cpp: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | #include 3 | #include 4 | 5 | template 6 | Number quartic_root(Number x) { 7 | return sqrt(sqrt(x)); 8 | } 9 | 10 | int main() { 11 | std::cout << quartic_root("Hello"); 12 | } 13 | -------------------------------------------------------------------------------- /sources_unix/18-07.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn _f1(a: T) -> T { a } 4 | fn _f2(a: T) -> T { 5 | let b: T = a; 6 | let mut c = b; 7 | c = _f1(c); 8 | c 9 | } 10 | fn _f3(a: &T) -> &T { a } 11 | } 12 | -------------------------------------------------------------------------------- /sources_unix/18-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn g(a: i32) { } 4 | fn f(a: T) -> bool { 5 | g(a); 6 | a == a 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/18-09.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | A, B; B, A*/ 3 | fn main() { 4 | let mut a = 'A'; 5 | let mut b = 'B'; 6 | print!("{}, {}; ", a, b); 7 | std::mem::swap(&mut a, &mut b); 8 | print!("{}, {}", a, b); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/18-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 14*/ 3 | fn main() { 4 | fn double(x: i32) -> i32 { 5 | x * 2 6 | } 7 | print!("{}", double(7i32)); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/18-16.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn double(x: i32) -> i32 { 4 | x * 2 5 | } 6 | print!("{}", 7i32.double()); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/18-18.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn double(self) -> Self { 3 | fn double(self: Self) -> Self { 4 | fn double(self: i32) -> Self { 5 | fn double(self) -> i32 { 6 | fn double(self: Self) -> i32 { 7 | fn double(self: i32) -> i32 { 8 | -------------------------------------------------------------------------------- /sources_unix/18-26.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 2.3 3.4*/ 3 | fn main() { 4 | fn f1(x: f32) -> f32 { x } 5 | fn f2(x: f32) -> f32 { x } 6 | let a: f32 = 2.3; 7 | let b: f32 = 3.4; 8 | print!("{} {}", f1(a), f2(b)); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/18-27.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 2.3 3.4*/ 3 | fn main() { 4 | type Number = f32; 5 | fn f1(x: Number) -> Number { x } 6 | fn f2(x: Number) -> Number { x } 7 | let a: Number = 2.3; 8 | let b: Number = 3.4; 9 | print!("{} {}", f1(a), f2(b)); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/18-28.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | type Number = f32; 4 | let a: Number = 2.3; 5 | let _b: f32 = a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/18-33.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Iterator { 4 | type Item; 5 | fn next(&mut self) -> Option; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/18-37.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | None Some(23) None Some(44)*/ 3 | fn main() { 4 | print!( 5 | "{:?} {:?} {:?} {:?}", 6 | (10..12).nth(2), 7 | (20..29).nth(2), 8 | ([31, 32].iter()).nth(2), 9 | ([41, 42, 43, 44].iter()).nth(2) 10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /sources_unix/19-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 21*/ 3 | fn main() { 4 | S::f2(); 5 | impl S { fn f1() { print!("1"); } } 6 | impl S { } 7 | S::f1(); 8 | impl S { fn f2() { print!("2"); } fn _f3() {} } 9 | struct S {} 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/19-05.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | struct S1 {} 4 | struct S2 {} 5 | impl S1 { 6 | fn f() {} 7 | //ILLEGAL: fn f(a: i32) {} 8 | } 9 | impl S2 { 10 | fn f() {} 11 | } 12 | S1::f(); 13 | S2::f(); 14 | } 15 | -------------------------------------------------------------------------------- /sources_unix/19-07.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | impl i32 {} 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/19-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | impl Vec {} 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/19-09.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | impl std::iter::Iterator for i32 {} 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/19-18.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn draw_text(txt) { 4 | txt.draw(); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/19-22.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr {} 4 | impl Tr for bool {} 5 | let _a: &Tr = &true; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/19-23.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | trait Tr {} 4 | let _a: &Tr = &true; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/21-01.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut a = 3; 4 | a = 4; 5 | let b = vec![11, 22, 33, 44, 55]; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/21-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3*/ 3 | fn main() { 4 | let a = 3; 5 | { 6 | let a_ref = &a; 7 | } 8 | print!("{}", a); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/21-07.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let v1 = vec![11, 22, 33]; 4 | let v2 = v1; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/21-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let v1 = vec![11, 22, 33]; 4 | let v2 = v1; 5 | print!("{}", v1.len()); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/21-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3 3*/ 3 | fn main() { 4 | let v1 = vec![11, 22, 33]; 5 | let v2 = v1.clone(); 6 | let v3 = v1; 7 | // ILLEGAL: print!("{} ", v1.len()); 8 | print!("{} {}", v2.len(), v3.len()); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/21-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 4*/ 3 | fn main() { 4 | let s1 = "abcd".to_string(); 5 | let s2 = s1.clone(); 6 | let s3 = s1; 7 | // ILLEGAL: print!("{} ", s1.len()); 8 | print!("{} {}", s2.len(), s3.len()); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/21-17.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12345 12345*/ 3 | fn main() { 4 | let i1 = Box::new(12345i16); 5 | let i2 = i1.clone(); 6 | let i3 = i1; 7 | // ILLEGAL: print!("{} ", i1); 8 | print!("{} {}", i2, i3); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/21-19.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let v1 = vec![false; 3]; 4 | let mut v2 = vec![false; 2]; 5 | v2 = v1; 6 | v1; 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/21-20.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f(v2: Vec) {} 4 | let v1 = vec![false; 3]; 5 | f(v1); 6 | v1; 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/21-21.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let v1 = vec![false; 0]; 4 | let mut v2 = vec![false; 0]; 5 | v2 = v1; 6 | v1; 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/21-22.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S {} 4 | let s1 = S {}; 5 | let s2 = s1; 6 | s1; 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/21-23.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 123 abc 123*/ 3 | fn main() { 4 | let i1 = 123; 5 | let _i2 = i1; 6 | let s1 = "abc"; 7 | let _s2 = s1; 8 | let r1 = &i1; 9 | let _r2 = r1; 10 | print!("{} {} {}", i1, s1, r1); 11 | } 12 | -------------------------------------------------------------------------------- /sources_unix/21-25.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S {} 4 | let s = S {}; 5 | s.clone(); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/21-26.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | struct S {} 4 | impl Clone for S { 5 | fn clone(&self) -> Self { Self {} } 6 | } 7 | let s = S {}; 8 | s.clone(); 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/21-27.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S {} 4 | impl Clone for S { 5 | fn clone(&self) -> Self { Self {} } 6 | } 7 | let s = S {}; 8 | s.clone(); 9 | let _s2 = s; 10 | s; 11 | } 12 | -------------------------------------------------------------------------------- /sources_unix/21-28.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | struct S {} 4 | impl Clone for S { 5 | fn clone(&self) -> Self { Self {} } 6 | } 7 | impl Copy for S {} 8 | let s = S {}; 9 | s.clone(); 10 | let _s2 = s; 11 | s; 12 | } 13 | -------------------------------------------------------------------------------- /sources_unix/21-29.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S {} 4 | impl Copy for S {} 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/21-30.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S { x: Vec } 4 | impl Copy for S {} 5 | impl Clone for S { 6 | fn clone(&self) -> Self { *self } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/22-01.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let n = 12; 4 | let ref_to_n = &n; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/22-02.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut n = 12; 4 | let ref1_to_n = &mut n; 5 | let ref2_to_n = &n; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12*/ 3 | fn main() { 4 | let a; 5 | a = 12; 6 | print!("{}", a); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/22-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello, world!*/ 3 | fn main() { 4 | let mut a = "Hello".to_string(); 5 | let mut b = a; 6 | print!("{}, ", b); 7 | a = "world".to_string(); 8 | print!("{}!", a); 9 | b = a; 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/22-05.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let ref_to_n; 4 | { 5 | let n = 12; 6 | ref_to_n = &n; 7 | print!("{} ", *ref_to_n); 8 | } 9 | print!("{}", *ref_to_n); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/22-07.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut v = vec![12]; 4 | let ref_to_first = &v[0]; 5 | v.push(13); 6 | print!("{}", ref_to_first); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/22-09.cpp: -------------------------------------------------------------------------------- 1 | // It has undefined behavior. Possibly it prints a number. 2 | #include 3 | #include 4 | int main() { 5 | std::vector v { 12 }; 6 | const int& ref_to_first = v[0]; 7 | v.push_back(13); 8 | std::cout << ref_to_first; 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/22-11.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let n = 12; 4 | let mut _r; 5 | let m = 13; 6 | _r = &m; 7 | _r = &n; 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/22-12.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let n = 12; 4 | let m = 13; 5 | let mut _r; 6 | _r = &m; 7 | _r = &n; 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/22-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12 12 13 14*/ 3 | fn main() { 4 | let a = 12; 5 | let mut b = 13; 6 | print!("{} ", a); 7 | { 8 | let c = &a; 9 | let d = &mut b; 10 | print!("{} {} ", c, d); 11 | } 12 | b += 1; 13 | print!("{}", b); 14 | } 15 | -------------------------------------------------------------------------------- /sources_unix/22-14.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let a = 12; 4 | let _b = &a; 5 | let _c = &a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12*/ 3 | fn main() { 4 | let mut a = 12; 5 | let _b = &a; 6 | print!("{}", a); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/22-16.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut a = 12; 4 | a = 13; 5 | let _b = &a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-17.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut a = 12; 4 | a = 13; 5 | let _b = &mut a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-18.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12*/ 3 | fn main() { 4 | let mut a = 12; 5 | print!("{}", a); 6 | let _b = &a; 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/22-19.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12*/ 3 | fn main() { 4 | let mut a = 12; 5 | print!("{}", a); 6 | let _b = &mut a; 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/22-20.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a = 12; 4 | let _b = &mut a; 5 | let _c = &a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-21.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a = 12; 4 | let _b = &a; 5 | let _c = &mut a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-22.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a = 12; 4 | let _b = &mut a; 5 | let _c = &mut a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-23.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a = 12; 4 | let _b = &a; 5 | a = 13; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-24.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a = 12; 4 | let _b = &mut a; 5 | a = 13; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-25.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a = 12; 4 | let _b = &mut a; 5 | print!("{}", a); 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-26.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut a = 12; 4 | { 5 | let b = &mut a; 6 | *b += 1; 7 | } 8 | let c = &mut a; 9 | *c += 2; 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/22-27.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut a = 12; 4 | fn f(b: &mut i32) { 5 | *b += 1; 6 | } 7 | f(&mut a); 8 | let c = &mut a; 9 | *c += 2; 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/22-32.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn func(v1: Vec, v2: &Vec) { 4 | let s = "Hello".to_string(); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-33.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn func() -> &str { 4 | "Hello" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-34.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn func(v: &Vec) -> &u8 { 4 | &v[3] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-35.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | trait Tr { 4 | fn f(flag: bool, b: &i32, c: (char, &i32)) -> (&i32, f64, &i32); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/22-36.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a>(flag: bool, b: &'a i32, c: (char, &'a i32)) 5 | -> (&'a i32, f64, &'static i32); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/22-37.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a>(flag: bool, b: &'a i32, c: (char, &i32)) 5 | -> (&'static i32, f64, &'a i32); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/22-38.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a, 'b, T1, T2>(flag: bool, b: &'a T1, c: (char, &'b i32)) 5 | -> (&'b i32, f64, &'a T2); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/22-40.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f(n: &u8) -> &'static u8 { 4 | n 5 | } 6 | print!("{}", *f(&12)); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/22-42.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f<'a, 'b>(x: &'a i32, y: &'b i32) -> (&'b i32, bool, &'a i32) { 4 | (x, true, y) 5 | } 6 | let i = 12; 7 | let j = 13; 8 | let r = f(&i, &j); 9 | print!("{} {} {}", *r.0, r.1, *r.2); 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/22-43.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12 true 13*/ 3 | fn main() { 4 | fn f<'a>(x: &'a i32, y: &'a i32) -> (&'a i32, bool, &'a i32) { 5 | (x, true, y) 6 | } 7 | let i = 12; 8 | let j = 13; 9 | let r = f(&i, &j); 10 | print!("{} {} {}", *r.0, r.1, *r.2); 11 | } 12 | -------------------------------------------------------------------------------- /sources_unix/22-44.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f<'a>(n: i32, x: &'a Vec, y: &Vec) -> &'a u8 { 4 | if n == 0 { return &x[0]; } 5 | if n < 0 { &x[1] } else { &x[2] } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/22-45.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f<'a>(n: i32, x: &'a Vec, y: &Vec) -> &'a u8 { 4 | if n == 0 { return &x[0]; } 5 | if n < 0 { &x[1] } else { &y[2] } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/22-46.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f<'a>(x: &'a Vec, y: &Vec) -> &'a u8 { 4 | if true { &x[0] } else { &y[0] } 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/23-01.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f(x: &u8) -> &u8; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/23-02.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a>(x: &'a u8) -> &'a u8; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/23-03.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f(b: bool, x: (u32, &u8)) -> &u8; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/23-04.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f(x: &u8) -> (&u8, &f64, bool, &Vec); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/23-05.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a>(x: &'a u8) -> (&u8, &'a f64, bool, &'static Vec); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/23-06.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f(&self, y: &u8) -> (&u8, &f64, bool, &Vec); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/23-07.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a>(&'a self, y: &u8) -> (&'a u8, &'a f64, bool, &'a Vec); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/23-08.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a>(&self, y: &'a u8) -> (&u8, &'a f64, bool, &Vec); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/23-09.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let x: i32 = 12; 4 | let _y: &i32 = &x; 5 | } 6 | -------------------------------------------------------------------------------- /sources_unix/23-10.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let _y: &i32; 4 | let x: i32 = 12; 5 | _y = &x; 6 | } 7 | -------------------------------------------------------------------------------- /sources_unix/23-11.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S { 4 | _b: bool, 5 | _ri: &i32, 6 | } 7 | let x: i32 = 12; 8 | let _y: S = S { _b: true, _ri: &x }; 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/23-12.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S { 4 | _b: bool, 5 | _ri: &i32, 6 | } 7 | let _y: S; 8 | let x: i32 = 12; 9 | _y = S { _b: true, _ri: &x }; 10 | } 11 | -------------------------------------------------------------------------------- /sources_unix/23-15.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | struct S { _b: bool, _ri: &'static i32 } 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/23-17.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct _S1 { _f: &i32 } 4 | struct _S2<'a> { _f: &i32 } 5 | struct _S3 { _f: &'a i32 } 6 | struct _S4<'a> { _f: &'static i32 } 7 | struct _S5 { _f: &'static i32 } 8 | struct _S6<'a> { _f: &'a i32 } 9 | } 10 | -------------------------------------------------------------------------------- /sources_unix/23-19.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 13*/ 3 | fn main() { 4 | fn f<'a>(b: &'a mut u8) -> &'a u8 { 5 | *b += 1; 6 | b 7 | } 8 | let mut byte = 12u8; 9 | let byte_ref = f(&mut byte); 10 | print!("{}", *byte_ref); 11 | } 12 | -------------------------------------------------------------------------------- /sources_unix/23-20.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3.14*/ 3 | fn main() { 4 | fn f<'a, T>(b: &'a T) -> &'a T { b } 5 | let pi = 3.14; 6 | let pi_ref = f(&pi); 7 | print!("{}", *pi_ref); 8 | } 9 | -------------------------------------------------------------------------------- /sources_unix/23-21.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S<'a, T> { b: &'a T } 4 | } 5 | -------------------------------------------------------------------------------- /sources_unix/23-22.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true*/ 3 | fn main() { 4 | struct S<'a, T: 'static> { b: &'a T } 5 | let s = S { b: &true }; 6 | print!("{}", *s.b); 7 | } 8 | -------------------------------------------------------------------------------- /sources_unix/23-23.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true true*/ 3 | fn main() { 4 | struct S<'a, T: 'a> { b: &'a T } 5 | let s1 = S { b: &true }; 6 | let s2 = S { b: &s1 }; 7 | print!("{} {}", *s1.b, *s2.b.b); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/01-01.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main(){} 3 | -------------------------------------------------------------------------------- /sources_win/01-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello, world!*/ 3 | fn main() { 4 | print!("Hello, world!"); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/01-03.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn Main() {} 3 | -------------------------------------------------------------------------------- /sources_win/01-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello, world!*/ 3 | fn main() { 4 | print!("{}, {}!", "Hello", "world"); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/01-05.c: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello, world!*/ 3 | #include 4 | int main() { 5 | printf("%s, %s!", "Hello", "world"); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/01-06.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | print!("{}, !", "Hello", "world"); 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/01-07.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | print!("{}, {}!", "Hello"); 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/01-08.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | First line 3 | Second line 4 | Third line 5 | */ 6 | fn main() { 7 | print!("First line\nSecond line\nThird line\n"); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/01-09.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | text of the line 3 | */ 4 | fn main() { 5 | println!("text of the line"); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/01-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | text of the line 3 | */ 4 | fn main() { 5 | print!("text of the line\n"); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/01-11.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | My number: 140*/ 3 | fn main() { 4 | print!("My number: 140"); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/01-12.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | My number: 140*/ 3 | fn main() { 4 | print!("My number: {}", "140"); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/01-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | My number: 140*/ 3 | fn main() { 4 | print!("My number: {}", 140); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/01-14.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | My number: 140*/ 3 | fn main() { 4 | print!("My number: {}", 000140); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/01-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | My number: 140*/ 3 | fn main() { 4 | print!("{}: {}", "My number", 140); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/01-16.sh: -------------------------------------------------------------------------------- 1 | clear 2 | rustc $* --color always 2>&1 | more 3 | -------------------------------------------------------------------------------- /sources_win/01-17.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cls 3 | rustc %* --color always 2>&1 | more 4 | -------------------------------------------------------------------------------- /sources_win/01-18.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 34*/ 3 | fn main() { 4 | // This program 5 | // prints a number. 6 | print!("{}", 34); // thirty-four 7 | /* print!("{}", 80); 8 | */ 9 | } 10 | 11 | -------------------------------------------------------------------------------- /sources_win/01-19.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | /* This is /* a valid*/ 4 | comment, even /* if /* it contains 5 | comments*/ inside */itself. */ 6 | /* This /* instead is not allowed in Rust, 7 | while in C is tolerated (but it may generate a warning).*/ 8 | } 9 | 10 | -------------------------------------------------------------------------------- /sources_win/02-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | The sum is 114.*/ 3 | fn main() { 4 | print!("The sum is {}.", 80 + 34); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/02-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 34 + 80 = 114*/ 3 | fn main() { 4 | print!("{} + {} = {}", 34, 80, 80 + 34); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/02-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 87*/ 3 | fn main() { 4 | print!("{}", (23 - 6) % 5 + 20 * 30 / (3 + 4)); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/02-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints 2 | The sum is 115.1*/ 3 | fn main() { 4 | print!("The sum is {}", 80.3 + 34.8); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/02-05.rs: -------------------------------------------------------------------------------- 1 | /* It prints 2 | The sum is 115.19999999999999*/ 3 | fn main() { 4 | print!("The sum is {}", 80.3 + 34.9); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/02-06.rs: -------------------------------------------------------------------------------- 1 | /* It prints 2 | 87.71428571428571*/ 3 | fn main() { 4 | print!("{}", (23. - 6.) % 5. + 20. * 30. / (3. + 4.)); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/02-07.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | print!("{}", 2.7 + 1); 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/02-08.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3.7*/ 3 | fn main() { 4 | print!("{}", 2.7 + 1.); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/02-09.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | -2 -0.19999999999999996*/ 3 | fn main() { 4 | print!("{} {}", -12 % 10, -1.2 % 1.); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/02-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 80 + 34 = 114*/ 3 | fn main() { 4 | print!("{} + ", 80); 5 | print!("{} =", 34); 6 | print!(" {}", 80 + 34); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/02-11.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 80 + 34 = 114*/ 3 | fn main() { 4 | print!("{} + ",80);print!("{} = ",34); 5 | print ! ( "{}" , 6 | 80 + 34 ) ; 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/02-12.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | println!("{}", "This" 4 | "is not allowed"); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/02-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | These 3 | are 4 | three lines 5 | */ 6 | fn main() { 7 | println!("{}", "These 8 | are 9 | three lines"); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/02-14.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | This is just one line 3 | */ 4 | fn main() { 5 | println!("{}", "This \ 6 | is \ 7 | just one line"); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/02-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | These 3 | are 4 | three lines 5 | */ 6 | fn main() { 7 | println!("{}", "These 8 | are 9 | three lines"); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/02-16.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | These 3 | are 4 | three lines 5 | */ 6 | fn main() { 7 | println!("{}", "These\n\ 8 | are\n\ 9 | three lines"); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/03-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 65*/ 3 | fn main() { 4 | let number = 12; 5 | let other_number = 53; 6 | print!("{}", number + other_number); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/03-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12 47*/ 3 | fn main() { 4 | let number = 12; 5 | print!("{} {}", number, 47); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/03-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12 53*/ 3 | fn main() { 4 | let mut number = 12; 5 | print!("{}", number); 6 | number = 53; 7 | print!(" {}", number); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/03-04.c: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 65*/ 3 | #include 4 | int main() { 5 | int const number = 12; 6 | int const other_number = 53; 7 | printf("%d", number + other_number); 8 | return 0; 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/03-05.c: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12 53*/ 3 | #include 4 | int main() { 5 | int number = 12; 6 | printf("%d", number); 7 | number = 53; 8 | printf(" %d", number); 9 | return 0; 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/03-06.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12 3 | */ 4 | fn main() { 5 | let mut number = 12; 6 | println!("{}", number); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/03-07.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12*/ 3 | fn main() { 4 | let number; 5 | number = 12; 6 | print!("{}", number); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/03-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let number; 4 | print!("{}", number); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/03-09.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 22*/ 3 | fn main() { 4 | let number1; 5 | let number2 = 22; 6 | number1 = number2; 7 | print!("{}", number1); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/03-10.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let number1; 4 | print!("{}", number1); 5 | number1 = 12; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/03-11.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let number; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/03-12.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let number = 12; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/03-13.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _number = 12; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/03-14.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _ = 12; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/03-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12*/ 3 | fn main() { 4 | let _number = 12; 5 | print!("{}", _number); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/03-16.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let _ = 12; 4 | print!("{}", _); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/03-17.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true false*/ 3 | fn main() { 4 | let truth = true; 5 | let falsity = false; 6 | print!("{} {}", truth, falsity); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/03-18.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true false true*/ 3 | fn main() { 4 | let truth = 5 > 2; 5 | let falsity = -12.3 >= 10.; 6 | print!("{} {} {}", truth, falsity, -50 < 6); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/03-19.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true true true*/ 3 | fn main() { 4 | print!("{} {} {}", "abc" < "abcd", "ab" < "ac", "A" < "a"); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/03-21.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true false*/ 3 | fn main() { 4 | print!("{} {}", true || true && ! true, 5 | (true || true) && ! true); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/03-22.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 2 3*/ 3 | fn main() { 4 | let mut n = 1; 5 | print!("{}", n); 6 | n = 2; 7 | print!(" {}", n); 8 | n = 3; 9 | print!(" {}", n); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/03-23.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut n = 1; 4 | print!("{}", n); 5 | n = 2; 6 | print!(" {}", n); 7 | n = 3.14; 8 | print!(" {}", n); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/03-24.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let number; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/03-25.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let number1 = 12; 4 | let _number2 = number1; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/03-26.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 2 3.14*/ 3 | fn main() { 4 | let mut n = 1.; 5 | print!("{}", n); 6 | n = 2.; 7 | print!(" {}", n); 8 | n = 3.14; 9 | print!(" {}", n); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/03-27.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 2 3.14*/ 3 | fn main() { 4 | let mut n = 1; 5 | print!("{}", n); 6 | n = 2; 7 | print!(" {}", n); 8 | let n = 3.14; 9 | print!(" {}", n); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/03-28.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut _n = 1; 4 | _n = 2; 5 | let _n = 3.14; 6 | _n = 5.9; 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/03-29.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 120 abcd true false*/ 3 | fn main() { 4 | let x = 120; print!("{} ", x); 5 | let x = "abcd"; print!("{} ", x); 6 | let mut x = true; print!("{} ", x); 7 | x = false; print!("{}", x); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/03-30.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10*/ 3 | fn main() { 4 | let mut a = 12; 5 | a = a + 1; 6 | a = a - 4; 7 | a = a * 7; 8 | a = a / 6; 9 | print!("{}", a); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/03-31.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10*/ 3 | fn main() { 4 | let mut a = 12; 5 | a += 1; 6 | a -= 4; 7 | a *= 7; 8 | a /= 6; 9 | print!("{}", a); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/03-32.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 5 5*/ 3 | fn main() { 4 | print!("{} {}", str::len("abcde"), "abcde".len()); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/04-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | positive*/ 3 | fn main() { 4 | let n = 4; 5 | if n > 0 { print!("positive"); } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/04-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | non positive*/ 3 | fn main() { 4 | let n = 0; 5 | if n > 0 { 6 | print!("number is"); 7 | print!(" positive"); 8 | } 9 | else { 10 | print!("non positive"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sources_win/04-07.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let a = if true { "abc" }; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/04-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let a = if true { "abc" } else { 12 }; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/04-09.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _a = if true { "abc" } else { "xy" }; 4 | let _b = if true { 3456 } else { 12 }; 5 | let _c = if true { 56.9 } else { 12. }; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/04-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 4 9 16 25 36 49 64 81 100 */ 3 | fn main() { 4 | let mut i = 1; 5 | while i <= 10 { 6 | print!("{} ", i * i); 7 | i += 1; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/04-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 4 9 16 25 36 49 64 81 100 121 144 169 196 */ 3 | fn main() { 4 | let mut i = 1; 5 | while true { 6 | let ii = i * i; 7 | if ii >= 200 { break; } 8 | print!("{} ", ii); 9 | i += 1; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /sources_win/04-14.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 4 9 16 25 36 49 64 81 100 121 144 169 196 */ 3 | fn main() { 4 | let mut i = 1; 5 | loop { 6 | let ii = i * i; 7 | if ii >= 200 { break; } 8 | print!("{} ", ii); 9 | i += 1; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /sources_win/04-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 4 9 16 25 36 49 64 81 100 */ 3 | fn main() { 4 | for i in 1..11 { 5 | print!("{} ", i * i); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/04-16.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 1 2 3 :8*/ 3 | fn main() { 4 | let index = 8; 5 | for index in 0..4 { print!("{} ", index); } 6 | print!(":{}", index); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/04-17.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 2 3 :1*/ 3 | fn main() { 4 | let mut limit = 4; 5 | for i in 1..limit { 6 | limit -= 1; 7 | print!("{} ", i); 8 | } 9 | print!(":{}", limit); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/04-18.c: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 2 :2 */ 3 | #include 4 | int main() { 5 | int limit = 4; 6 | for (int i = 1; i < limit; i++) { 7 | limit -= 1; 8 | printf("%d ", i); 9 | } 10 | printf(":%d ", limit); 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /sources_win/04-20.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | { let i = 10; } 4 | print!("{} ", i); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/04-21.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10 14*/ 3 | fn main() { 4 | let i = 10; 5 | { 6 | let j = 4; 7 | { 8 | print!("{} ", i); 9 | } 10 | print!("{}", i + j); 11 | } // End of the scope of "j" 12 | } // End of the scope of "i" 13 | -------------------------------------------------------------------------------- /sources_win/04-22.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 10 */ 3 | fn main() { 4 | let i = 10; 5 | { 6 | let i = 4; 7 | print!("{} ", i); 8 | } // End of the scope of the second "i" 9 | print!("{} ", i); 10 | } // End of the scope of the first "i" 11 | -------------------------------------------------------------------------------- /sources_win/04-23.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 0 */ 3 | fn main() { 4 | let mut _i = 1; 5 | if true { let _i = 2; } 6 | print!("{} ", _i); 7 | 8 | while _i > 0 { _i -= 1; let _i = 5; } 9 | print!("{} ", _i); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/05-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | This is a sentence in English*/ 3 | fn main() { 4 | let x = ["English", "This", "sentence", "a", "in", "is"]; 5 | print!("{} {} {} {} {} {}", 6 | x[1], x[5], x[3], x[2], x[4], x[0]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/05-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 2, 5.*/ 3 | fn main() { 4 | let a = [true, false]; 5 | let b = [1, 2, 3, 4, 5]; 6 | print!("{}, {}.", a.len(), b.len()); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/05-03.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let x = ["This", 4]; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/05-04.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let x = [4, 5.]; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/05-05.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut x = ["a"]; // array of strings 4 | x[0] = 3; 5 | x[-1] = "b"; 6 | x[0.] = "b"; 7 | x[false] = "b"; 8 | x["0"] = "b"; 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/05-06.rs: -------------------------------------------------------------------------------- 1 | // It panics at run-time. 2 | fn main() { 3 | let x = ["a"]; // array of strings 4 | let _y = x[1]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/05-07.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | This is a nice sentence.*/ 3 | fn main() { 4 | let mut x = ["This", "is", "a", "sentence"]; 5 | x[2] = "a nice"; 6 | print!("{} {} {} {}.", x[0], x[1], x[2], x[3]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/05-09.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut x = ["a", "b", "c"]; 4 | x = ["X", "Y"]; 5 | x = [15, 16, 17]; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/05-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4, 3.14*/ 3 | fn main() { 4 | let mut x = [4.; 5000]; 5 | x[2000] = 3.14; 6 | print!("{}, {}", x[1000], x[2000]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/05-12.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 23, 56*/ 3 | fn main() { 4 | let mut x = [[[[23; 4]; 6]; 8]; 15]; 5 | x[14][7][5][3] = 56; 6 | print!("{}, {}", x[0][0][0][0], x[14][7][5][3]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/05-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 15, 8, 6, 4.*/ 3 | fn main() { 4 | let x = [[[[0; 4]; 6]; 8]; 15]; 5 | print!("{}, {}, {}, {}.", 6 | x.len(), x[0].len(), x[0][0].len(), x[0][0][0].len()); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/05-14.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let length = 6; 4 | let arr = [0; length]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/05-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | This is. Length: 2.*/ 3 | fn main() { 4 | let x = vec!["This", "is"]; 5 | print!("{} {}. Length: {}.", x[0], x[1], x.len()); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/05-17.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3.14, 4, 4.89*/ 3 | fn main() { 4 | let length = 5000; 5 | let mut y = vec![4.; length]; 6 | y[6] = 3.14; 7 | y.push(4.89); 8 | print!("{}, {}, {}", y[6], y[4999], y[5000]); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/05-18.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut _x = vec!["a", "b", "c"]; 4 | _x = vec!["X", "Y"]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/05-19.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut _x = vec!["a", "b", "c"]; 4 | _x = vec![15, 16, 17]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/05-21.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut _x = vec!["This", "is", "a", "sentence"]; 4 | _x.insert("line", 1); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/05-22.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut _x = vec![12, 13, 14, 15]; 4 | _x.insert(3, 1); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/05-23.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | f(["help", "debug"], vec![0, 4, 15]); 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/05-24.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | f([], vec![]); 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/05-25.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let _a = []; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/05-26.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _a = [""; 0]; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/05-27.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _a = vec![true; 0]; 4 | let _b = vec![false; 0]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/05-28.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | f([""; 0], vec![0; 0]); 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/05-29.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | print!("{} {}", [1, 2, 3], vec![4, 5]); 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/05-30.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [1, 2, 3] [4, 5]*/ 3 | fn main() { 4 | print!("{:?} {:?}", [1, 2, 3], vec![4, 5]); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/05-31.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [4, 56, -2] [7, 81, 12500]*/ 3 | fn main() { 4 | let mut a1 = [4, 56, -2]; 5 | let a2 = [7, 81, 12500]; 6 | print!("{:?} ", a1); 7 | a1 = a2; 8 | print!("{:?}", a1); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/05-32.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [4, 56, -2] [7, 81, 12500]*/ 3 | fn main() { 4 | let mut a1 = vec![4, 56, -2]; 5 | let a2 = vec![7, 81, 12500]; 6 | print!("{:?} ", a1); 7 | a1 = a2; 8 | print!("{:?}", a1); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/05-33.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a1 = [4, 56, -2]; 4 | let a2 = [7, 81]; 5 | print!("{:?} ", a1); 6 | a1 = a2; 7 | print!("{:?}", a1); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/05-34.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [4, 56, -2] [7, 81]*/ 3 | fn main() { 4 | let mut a1 = vec![4, 56, -2]; 5 | let a2 = vec![7, 81]; 6 | print!("{:?} ", a1); 7 | a1 = a2; 8 | print!("{:?}", a1); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/06-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 16 10 8 2*/ 3 | fn main() { 4 | let hexadecimal = 0x10; 5 | let decimal = 10; 6 | let octal = 0o10; 7 | let binary = 0b10; 8 | print!("{} {} {} {}", 9 | hexadecimal, decimal, octal, binary); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/06-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10 256*/ 3 | fn main() { 4 | print!("{} {}", 0xA, 0b100000000); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/06-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10 256*/ 3 | fn main() { 4 | print!("{} {}", 10, 256); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/06-06.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let one_thousand = 1e3; 4 | let one_million = 1e6; 5 | let thirteen_billions_and_half = 13.5e9; 6 | let twelve_millionths = 12e-6; 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/06-07.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 5 5 5 5*/ 3 | fn main() { 4 | let a: i8 = 5; 5 | let b: i16 = 5; 6 | let c: i32 = 5; 7 | let d: i64 = 5; 8 | print!("{} {} {} {}", a, b, c, d); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/06-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let a: i8 = 5; 4 | let b: i16 = 5; 5 | print!("{}", a + b); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/06-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 5 5 5 5*/ 3 | fn main() { 4 | let a: u8 = 5; 5 | let b: u16 = 5; 6 | let c: u32 = 5; 7 | let d: u64 = 5; 8 | print!("{} {} {} {}", a, b, c, d); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/06-11.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 33*/ 3 | fn main() { 4 | let arr = [11, 22, 33]; 5 | let i: usize = 2; 6 | print!("{}", arr[i]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/06-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0*/ 3 | fn main() { 4 | let a = [0]; 5 | let i = 0; 6 | print!("{}", a[i]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/06-14.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let i = 0; 4 | let _j: u16 = i; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/06-15.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let i = 0; 4 | let _j: u16 = i; 5 | let _k: i16 = i; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/06-16.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let i = 0; 4 | let _j: u16 = i; 5 | let _k = i; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/06-17.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 8 -589934592*/ 3 | fn main() { 4 | let i = 8; 5 | let j = 8_000_000_000; 6 | print!("{} {}", i, j); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/06-18.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4.6 3.91*/ 3 | fn main() { 4 | let a: f64 = 4.6; 5 | let b: f32 = 3.91; 6 | print!("{} {}", a, b); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/06-19.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let a = 4.6; 4 | let mut _b: f32 = 3.91e5; 5 | _b = a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/06-20.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 19*/ 3 | fn main() { 4 | let a: i16 = 12; 5 | let b: u32 = 4; 6 | let c: f32 = 3.7; 7 | print!("{}", a as i8 + b as i8 + c as i8); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/06-21.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | -12 34464 1410065408*/ 3 | fn main() { 4 | let a = 500 as i8; 5 | let b = 100_000 as u16; 6 | let c = 10_000_000_000 as u32; 7 | print!("{} {} {}", a, b, c); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/06-22.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _a: i16 = -150; 4 | let _b = -150 as i16; 5 | let _c = -150 + _b - _b; 6 | let _d = -150i16; 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/06-24.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [true][a]*/ 3 | fn main() { 4 | let a: bool = true; print!("[{}]", a); 5 | let b: char = 'a'; print!("[{}]", b); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/06-25.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | è さ 3 | */ 4 | fn main() { 5 | let e_grave = 'è'; 6 | let japanese_character = 'さ'; 7 | println!("{} {}", e_grave, japanese_character); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/06-26.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let _a = 'a' + 'b'; 4 | let _b = false + true; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/06-27.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1 0 65 224 8364*/ 3 | fn main() { 4 | print!("{} {} {} {} {}", true as u8, false as u8, 5 | 'A' as u32, 'à' as u32, '€' as u32); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/06-28.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true false A à*/ 3 | fn main() { 4 | let truthy = 1; 5 | let falsy = 0; 6 | print!("{} {} {} {}", truthy != 0, falsy != 0, 7 | 65 as char, 224 as char); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/06-31.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _array1: [char; 3] = ['x', 'y', 'z']; 4 | let _array2: [f32; 200] = [0f32; 200]; 5 | let _vector1: Vec = vec!['x', 'y', 'z']; 6 | let _vector2: Vec = vec![0; 5000]; 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/06-32.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let n = 20; 4 | let _ = [0; n]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/06-33.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | const N: usize = 20; 4 | let _ = [0; N]; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/06-34.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let _: bool = 4u32 / 3u32; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/06-35.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let _: bool = 4 / 3; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/07-03.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | enum T {A, B, C, D}; 4 | let n: i32 = T::D; 5 | let e: T = 1; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/07-04.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | enum CardinalPoint { North, South, West, East }; 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/07-05.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let a = 7.2; 4 | 12; 5 | true; 6 | 4 > 7; 7 | 5.7 + 5. * a; 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/07-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | enum CardinalPoint { North, South, West, East }; 4 | let direction = CardinalPoint::South; 5 | if direction == CardinalPoint::North { } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/07-09.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | enum CardinalPoint { North, South, West, East }; 4 | if CardinalPoint::South < CardinalPoint::North { } 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/08-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10000000, 183.19, Q*/ 3 | fn main() { 4 | let data = (10000000, 183.19, 'Q'); 5 | let copy_of_data = data; 6 | print!("{}, {}, {}", 7 | data.0, copy_of_data.1, data.2); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/08-02.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let data: (i32, f64, char) = (10000000, 183.19, 'Q'); 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/08-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | -5, 183.19, x*/ 3 | fn main() { 4 | let mut data = (10000000, 183.19, 'Q'); 5 | data.0 = -5; 6 | data.2 = 'x'; 7 | print!("{}, {}, {}", data.0, data.1, data.2); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/08-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | */ 3 | fn main() { 4 | let array = [12, 13, 14]; 5 | let tuple = (12, 13, 14); 6 | let i = 0; 7 | print!("{}", array[i]); 8 | print!("{}", tuple.i); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/08-05.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3*/ 3 | fn main() { 4 | let data = (10, 'x', 12, 183.19, 'Q', false, -9); 5 | print!("{}", data.2 + data.6); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/08-06.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let data1 = (10, 'x', 12, 183.19, 'Q', false, -9); 4 | let mut data2: (u16, char, i16, f64, bool, char, i16); 5 | data2 = data1; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/09-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | ---------- 3 | ---------- 4 | ---------- 5 | */ 6 | fn main() { 7 | fn line() { 8 | println!("----------"); 9 | } 10 | line(); 11 | line(); 12 | line(); 13 | } 14 | -------------------------------------------------------------------------------- /sources_win/09-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 1212*/ 3 | fn f1() { print!("1"); } 4 | fn main() { 5 | f1(); 6 | fn f2() { print!("2"); } 7 | f2(); f1(); f2(); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/09-03.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | a; 4 | let a = 3; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/09-04.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | f(); 4 | fn f() {} 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/09-05.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f() {} 4 | fn f() {} 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/09-06.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | aab*/ 3 | fn main() { 4 | { 5 | fn f() { print!("a"); } 6 | f(); f(); 7 | } 8 | { 9 | fn f() { print!("b"); } 10 | f(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sources_win/09-07.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | { 4 | fn f() { } 5 | } 6 | f(); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/09-08.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 232*/ 3 | fn f() { print!("1"); } 4 | fn main() { 5 | f(); // Prints 2 6 | { 7 | f(); // Prints 3 8 | fn f() { print!("3"); } 9 | } 10 | f(); // Prints 2 11 | fn f() { print!("2"); } 12 | } 13 | -------------------------------------------------------------------------------- /sources_win/09-11.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f(a: i16) {} 4 | f(3.); 5 | f(3u16); 6 | f(3i16); 7 | f(3); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/09-12.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 8 4*/ 3 | fn main() { 4 | fn print_double(mut x: f64) { 5 | x *= 2.; 6 | print!("{}", x); 7 | } 8 | let x = 4.; 9 | print_double(x); 10 | print!(" {}", x); 11 | } 12 | -------------------------------------------------------------------------------- /sources_win/09-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 34.6*/ 3 | fn main() { 4 | fn double(x: f64) -> f64 { x * 2. } 5 | print!("{}", double(17.3)); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/09-14.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f1(x: i32) {} 4 | fn f2(x: i32) -> () {} 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/09-15.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f1() -> i32 { 4.5; "abc"; 73i32 } 4 | fn f2() -> i32 { 4.5; "abc"; 73 } 5 | fn f3() -> i32 { 4.5; "abc"; 73 + 100 } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/09-16.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f1() -> i32 { 4.5; "abc"; false } 4 | fn f2() -> i32 { 4.5; "abc"; () } 5 | fn f3() -> i32 { 4.5; "abc"; {} } 6 | fn f4() -> i32 { 4.5; "abc"; } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/09-17.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 0*/ 3 | fn main() { 4 | fn f(x: f64) -> f64 { 5 | if x <= 0. { return 0.; } 6 | x + 3. 7 | } 8 | print!("{} {}", f(1.), f(-1.)); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/09-18.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 0*/ 3 | fn main() { 4 | fn f(x: f64) -> f64 { 5 | if x <= 0. { return 0.; } 6 | return x + 3.; 7 | } 8 | print!("{} {}", f(1.), f(-1.)); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/09-19.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 0*/ 3 | fn main() { 4 | fn f(x: f64) -> f64 { 5 | if x <= 0. { 0. } 6 | else { x + 3. } 7 | } 8 | print!("{} {}", f(1.), f(-1.)); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/09-20.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 5*/ 3 | fn main() { 4 | fn f(x: i32) { 5 | if x <= 0 { return; } 6 | if x == 4 { return (); } 7 | if x == 7 { return {}; } 8 | print!("{}", x); 9 | } 10 | f(5); 11 | } 12 | -------------------------------------------------------------------------------- /sources_win/09-21.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f() -> i32 { 3 } 4 | f(); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/09-22.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f() -> i32 { 3 } 4 | let _a: i32 = f(); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/09-23.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f() -> i32 { 3 } 4 | let _a: u32 = f(); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/09-24.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | (4, 6)*/ 3 | fn main() { 4 | fn divide(dividend: i32, divisor: i32) -> (i32, i32) { 5 | (dividend / divisor, dividend % divisor) 6 | } 7 | print!("{:?}", divide(50, 11)); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/09-26.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [5, -8, 9, 0, -14, -2, 3, 5, 3, 1]*/ 3 | fn main() { 4 | let mut arr = [5, -4, 9, 0, -7, -1, 3, 5, 3, 1]; 5 | for i in 0..10 { 6 | if arr[i] < 0 { arr[i] *= 2; } 7 | } 8 | print!("{:?}", arr); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/09-31.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 15 15 15*/ 3 | fn main() { 4 | let a = 15; 5 | let ref_a = &a; 6 | print!("{} {} {}", a, *ref_a, ref_a); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/09-32.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 7 7 7 7*/ 3 | fn main() { 4 | let a = &&&7; 5 | print!("{} {} {} {}", ***a, **a, *a, a); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/10-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 37*/ 3 | fn main() { 4 | // Library code 5 | fn f(ch: char, num1: i16, num2: i16) -> i16 { 6 | if ch == 'a' { num1 } 7 | else { num2 } 8 | } 9 | 10 | // Application code 11 | print!("{}", f('a', 37, 41)); 12 | } 13 | -------------------------------------------------------------------------------- /sources_win/10-04.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f(a: T, _b: T) -> T { a } 4 | let _a = f(12u8, 13u8); 5 | let _b = f(12i64, 13i64); 6 | let _c = f(12i16, 13u16); 7 | let _d: i32 = f(12i16, 13i16); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/10-05.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f(_a: Param1, _b: Param2) {} 4 | f('a', true); 5 | f(12.56, "Hello"); 6 | f((3, 'a'), [5, 6, 7]); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/10-08.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | (4, 3) (true, 5)*/ 3 | fn main() { 4 | fn swap(a: T1, b: T2) -> (T2, T1) { (b, a) } 5 | let x = swap(3i16, 4u16); 6 | let y = swap(5f32, true); 7 | print!("{:?} {:?}", x, y); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/10-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | (4.5, 'A') (-6, 'g')*/ 3 | fn main() { 4 | fn swap(a: T1, b: T2) -> (T2, T1) { (b, a) } 5 | let x = swap('A', 4.5); 6 | let y = swap('g', -6.); 7 | print!("{:?} {:?}", x, y); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/10-11.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | (4.5, 'A') (-6, 'g')*/ 3 | fn main() { 4 | fn swap_char_f64(a: char, b: f64) -> (f64, char) { (b, a) } 5 | let x = swap_char_f64('A', 4.5); 6 | let y = swap_char_f64('g', -6.); 7 | print!("{:?} {:?}", x, y); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/10-15.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | enum Option { 4 | Some(T), 5 | None, 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/10-16.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | enum Optional { 4 | Something(T), 5 | Nothing, 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/10-18.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | enum Result { 4 | Ok(T), 5 | Err(E), 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/10-21.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 33, 22, 11, */ 3 | fn main() { 4 | let mut v = vec![11, 22, 33]; 5 | for _ in 0..v.len() { 6 | print!("{}, ", v.pop().unwrap()) 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/11-01.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | static _A: u32 = 3; 4 | static _B: i32 = -1_000_000; 5 | static _C: f64 = 5.7e10; 6 | static _D: u8 = 200; 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/11-02.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _a: u32 = 3; 4 | let _b: i32 = -1_000_000; 5 | let _c: f64 = 5.7e10; 6 | let _d: u8 = 200; 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/11-03.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f1(x1: i32) { 4 | let y1 = 2 + x1; 5 | } 6 | fn f2(x2: i32) { 7 | f1(x2 + 7); 8 | } 9 | let k = 20; 10 | f1(k + 4); 11 | f2(30); 12 | } 13 | -------------------------------------------------------------------------------- /sources_win/12-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 4 */ 3 | fn main() { 4 | print!("{} ", std::mem::size_of::()); 5 | print!("{} ", std::mem::size_of_val(&12)); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/12-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 4 */ 3 | fn main() { 4 | use std::mem; 5 | print!("{} ", mem::size_of::()); 6 | print!("{} ", mem::size_of_val(&12)); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/12-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 4 */ 3 | fn main() { 4 | use std::mem::size_of; 5 | use std::mem::size_of_val; 6 | print!("{} ", size_of::()); 7 | print!("{} ", size_of_val(&12)); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/12-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 4 */ 3 | fn main() { 4 | use std::mem::*; 5 | print!("{} ", size_of::()); 6 | print!("{} ", size_of_val(&12)); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/13-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [0, 1, 4, 7, 8, 10, 12, 45]*/ 3 | fn main() { 4 | let mut arr = [4, 8, 1, 10, 0, 45, 12, 7]; 5 | arr.sort(); 6 | print!("{:?}", arr); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/13-03.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | enum Ordering { Less, Equal, Greater } 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/13-04.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let two = 2.; 4 | fn print_double(x: f64) { 5 | print!("{}", x * two); 6 | } 7 | print_double(17.2); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/13-05.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 34.4*/ 3 | fn main() { 4 | const TWO: f64 = 2.; 5 | fn print_double(x: f64) { 6 | print!("{}", x * TWO); 7 | } 8 | print_double(17.2); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/13-06.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 34.4*/ 3 | fn main() { 4 | static TWO: f64 = 2.; 5 | fn print_double(x: f64) { 6 | print!("{}", x * TWO); 7 | } 8 | print_double(17.2); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/13-09.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [0, 1, 4, 7, 8, 10, 12, 45]*/ 3 | fn main() { 4 | let mut arr = [4, 8, 1, 10, 0, 45, 12, 7]; 5 | arr.sort_by(|a, b| a.cmp(b)); 6 | print!("{:?}", arr); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/13-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [45, 12, 10, 8, 7, 4, 1, 0]*/ 3 | fn main() { 4 | let mut arr = [4, 8, 1, 10, 0, 45, 12, 7]; 5 | arr.sort_by(|a, b| (&-*a).cmp(&-*b)); 6 | print!("{:?}", arr); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/13-11.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [45, 12, 10, 8, 7, 4, 1, 0]*/ 3 | fn main() { 4 | let mut arr = [4, 8, 1, 10, 0, 45, 12, 7]; 5 | arr.sort_by(|a, b| b.cmp(a)); 6 | print!("{:?}", arr); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/14-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello*/ 3 | fn main() { 4 | let mut a = "Hel"; 5 | print!("{}", a); 6 | a = "lo"; 7 | print!("{}", a); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/14-03.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let a: str; 4 | fn f(a: str) {} 5 | print!("{}", std::mem::size_of::()); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/14-05.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello*/ 3 | fn main() { 4 | let mut a: String = "He".to_string(); 5 | a.push('l'); 6 | a.push('l'); 7 | a.push('o'); 8 | print!("{}", a); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/14-06.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hi*/ 3 | fn main() { 4 | let mut a: String = "Xy".to_string(); // "Xy" 5 | a.remove(0); // "y" 6 | a.insert(0, 'H'); // "Hy" 7 | a.pop(); // "H" 8 | a.push('i'); // "Hi" 9 | print!("{}", a); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/14-09.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | ()*/ 3 | fn main() { 4 | let s1 = String::new(); 5 | let s2 = String::from(""); 6 | let s3 = "".to_string(); 7 | let s4 = "".to_owned(); 8 | let s5 = format!(""); 9 | print!("({}{}{}{}{})", s1, s2, s3, s4, s5); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/14-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello, world!*/ 3 | fn main() { 4 | let mut dyn_str = "Hello".to_string(); 5 | dyn_str.push_str(", "); 6 | dyn_str.push_str("world"); 7 | dyn_str.push_str("!"); 8 | print!("{}", dyn_str); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/14-14.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello, world!*/ 3 | fn main() { 4 | let mut dyn_str = "Hello".to_string(); 5 | dyn_str += ", "; 6 | dyn_str += "world"; 7 | dyn_str += "!"; 8 | print!("{}", dyn_str); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/14-16.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | bye bye*/ 3 | fn main() { 4 | let word = "bye".to_string(); 5 | let w1: &str = &word; 6 | let w2: &String = &word; 7 | print!("{} {}", w1, w2); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/15-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 3 | 1 4 | 2 5 | 3 6 | 4 7 | 5 8 | 6 9 | 7 10 | 8 11 | 9 12 | 10 13 | 11 14 | */ 15 | fn main() { 16 | for i in 0..12 { println!("{}", i); } 17 | } 18 | -------------------------------------------------------------------------------- /sources_win/15-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 3 | 1 4 | 2 5 | 3 6 | 4 7 | 5 8 | 6 9 | 7 10 | 8 11 | 9 12 | 10 13 | 11 14 | */ 15 | fn main() { 16 | let dozen = 0..12; 17 | for i in dozen { println!("{}", i); } 18 | } 19 | -------------------------------------------------------------------------------- /sources_win/15-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3..8, 3, 8, 5 3 | 3, 4, 5, 6, 7, */ 4 | fn main() { 5 | let range: std::ops::Range = 3..8; 6 | println!("{:?}, {}, {}, {}", 7 | range, range.start, range.end, range.len()); 8 | for i in range { print!("{}, ", i); } 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/15-05.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let r1 = 3u8..12i8; 4 | let r2: std::ops::Range = -3..12; 5 | let r3: std::ops::Range = 3i16..12; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/15-06.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _r1 = 3u8..1200; 4 | let _r2 = 3..5_000_000_000; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/15-07.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let _r1 = false .. true; 4 | let _r2 = "hello" .. "world"; 5 | let _r3 = 4.2 .. 7.9; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/15-16.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let arr = [55, 22, 33, 44, 66]; 4 | let _r1 = 4..4; let _a1 = &arr[_r1]; 5 | let _r2 = 4..3; //let _a2 = &arr[_r2]; 6 | let _r3 = -3i32..2; //let _a3 = &arr[_r3]; 7 | let _r4 = 3..8; //let _a4 = &arr[_r4]; 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/15-19.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [11, 22] [33, 44]*/ 3 | fn main() { 4 | let arr = [11, 22, 33, 44]; 5 | let n = 2; 6 | let sr1 = &arr[0..n]; 7 | let sr2 = &arr[n..arr.len()]; 8 | print!("{:?} {:?}", sr1, sr2); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/15-20.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [11, 22] [33, 44]*/ 3 | fn main() { 4 | let arr = [11, 22, 33, 44]; 5 | let n = 2; 6 | let sr1 = &arr[..n]; 7 | let sr2 = &arr[n..]; 8 | print!("{:?} {:?}", sr1, sr2); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/15-22.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3 4 5 6 */ 3 | fn main() { 4 | for i in 3.. { 5 | if i * i > 40 { break; } 6 | print!("{} ", i); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/15-23.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 [11, 22, 33, 44] [11, 22, 33, 44]*/ 3 | fn main() { 4 | let range: std::ops::RangeFull = ..; 5 | let a1 = [11, 22, 33, 44]; 6 | let a2 = &a1[range]; 7 | print!("{} {:?} {:?}", std::mem::size_of_val(&range), a1, a2); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/16-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | €: 8364 3 | è: 232 4 | e: 101 5 | */ 6 | fn main() { 7 | fn print_codes(s: &str) { 8 | for c in s.chars() { 9 | println!("{}: {}", c, c as u32); 10 | } 11 | } 12 | print_codes("€èe"); 13 | } 14 | -------------------------------------------------------------------------------- /sources_win/16-06.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 226 130 172 195 168 101 */ 3 | fn main() { 4 | for byte in "€èe".bytes() { 5 | print!("{} ", byte); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/16-07.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 226 130 172 195 168 101 */ 3 | fn main() { 4 | let string: &str = "€èe"; 5 | let string_it: std::str::Bytes = string.bytes(); 6 | for byte in string_it { 7 | print!("{} ", byte); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/16-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 226 130 172 195 168 101 */ 3 | fn main() { 4 | for byte in "€èe".bytes() { 5 | print!("{} ", byte); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/16-11.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 226 130 172 195 168 101 */ 3 | fn main() { 4 | for byte in "€èe".as_bytes().iter() { 5 | print!("{} ", byte); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/16-12.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | a X; b X; c X; */ 3 | fn main() { 4 | let mut r = "abc".chars(); 5 | for i in r { 6 | r = "XY".chars(); 7 | print!("{} {}; ", i, r.next().unwrap()); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/16-13.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 10 11 12 13 14 */ 3 | fn main() { 4 | let r = 0..5; 5 | for mut i in r { 6 | i += 10; 7 | print!("{} ", i); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/16-15.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut slice = &mut [3, 4, 5]; 4 | { 5 | let mut iterator = slice.iter(); 6 | for mut item_ref in iterator { 7 | *item_ref += 1; 8 | } 9 | } 10 | print!("{:?}", slice); 11 | } 12 | -------------------------------------------------------------------------------- /sources_win/16-16.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [4, 5, 6]*/ 3 | fn main() { 4 | let slice = &mut [3, 4, 5]; 5 | { 6 | let iterator = slice.iter_mut(); 7 | for item_ref in iterator { 8 | *item_ref += 1; 9 | } 10 | } 11 | print!("{:?}", slice); 12 | } 13 | -------------------------------------------------------------------------------- /sources_win/16-21.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | -8 -31 */ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | for n in arr.iter() { 6 | if *n < 0 { print!("{} ", n); } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/16-22.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | -8 -31 */ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | for n in arr.iter().filter(|x| **x < 0) { 6 | print!("{} ", n); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/16-23.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 132 -16 86 38 0 -62 */ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | for n in arr.iter() { 6 | print!("{} ", n * 2); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/16-24.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 132 -16 86 38 0 -62 */ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | for n in arr.iter().map(|x| *x * 2) { 6 | print!("{} ", n); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/16-25.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 a, 1 b, 2 c, */ 3 | fn main() { 4 | let arr = ['a', 'b', 'c']; 5 | for i in 0..arr.len() { 6 | print!("{} {}, ", i, arr[i]); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/16-26.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | a, b, c, */ 3 | fn main() { 4 | let arr = ['a', 'b', 'c']; 5 | for ch in arr.iter() { 6 | print!("{}, ", ch); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/16-27.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 a, 1 b, 2 c, */ 3 | fn main() { 4 | let arr = ['a', 'b', 'c']; 5 | let mut i = 0; 6 | for ch in arr.iter() { 7 | print!("{} {}, ", i, *ch); 8 | i += 1; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/16-28.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0 a, 1 b, 2 c, */ 3 | fn main() { 4 | let arr = ['a', 'b', 'c']; 5 | for (i, ch) in arr.iter().enumerate() { 6 | print!("{} {}, ", i, *ch); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/16-32.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | false true */ 3 | fn main() { 4 | print!("{} ", 5 | [45, 8, 2, 6].iter().any(|n| *n < 0)); 6 | print!("{} ", 7 | [45, 8, -2, 6].iter().any(|n| *n < 0)); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/16-33.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | false true */ 3 | fn main() { 4 | print!("{} ", [45, 8, 2, 6].iter() 5 | .any(|n: &i32| -> bool { *n < 0 })); 6 | print!("{} ", [45, 8, -2, 6].iter() 7 | .any(|n: &i32| -> bool { *n < 0 })); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/16-34.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true false */ 3 | fn main() { 4 | print!("{} ", [45, 8, 2, 6].iter() 5 | .all(|n: &i32| -> bool { *n > 0 })); 6 | print!("{} ", [45, 8, -2, 6].iter() 7 | .all(|n: &i32| -> bool { *n > 0 })); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/16-35.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3 6*/ 3 | fn main() { 4 | let s = "€èe"; 5 | print!("{} {}", s.chars().count(), s.len()); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/16-36.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 57*/ 3 | fn main() { 4 | print!("{}", [45, 8, -2, 6].iter().sum::()); 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/16-37.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 57*/ 3 | fn main() { 4 | let s: i32 = [45, 8, -2, 6].iter().sum(); 5 | print!("{}", s); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/16-38.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 0*/ 3 | fn main() { 4 | let s: u32 = [].iter().sum(); 5 | print!("{}", s); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/16-41.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [36, 1, 15, 9, 4]*/ 3 | fn main() { 4 | let arr = [36, 1, 15, 9, 4]; 5 | let v = arr.iter().collect::>(); 6 | print!("{:?}", v); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/16-42.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [36, 1, 15, 9, 4]*/ 3 | fn main() { 4 | let arr = [36, 1, 15, 9, 4]; 5 | let v = arr.iter().collect::>(); 6 | print!("{:?}", v); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/16-43.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [36, 1, 15, 9, 4]*/ 3 | fn main() { 4 | let arr = [36, 1, 15, 9, 4]; 5 | let v: Vec<_> = arr.iter().collect(); 6 | print!("{:?}", v); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/16-45.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [132, 86, 38]*/ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | let mut v = vec![]; 6 | for i in 0..arr.len() { 7 | if arr[i] > 0 { v.push(arr[i] * 2); } 8 | } 9 | print!("{:?}", v); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/16-46.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [132, 86, 38]*/ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | let mut v = vec![]; 6 | for n in arr.iter() { 7 | if *n > 0 { v.push(*n * 2); } 8 | } 9 | print!("{:?}", v); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/16-48.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [132, 86, 38]*/ 3 | fn main() { 4 | let arr = [66, -8, 43, 19, 0, -31]; 5 | let v = arr 6 | .iter() 7 | .filter(|x| **x > 0) 8 | .map(|x| *x * 2) 9 | .collect::>(); 10 | print!("{:?}", v); 11 | } 12 | -------------------------------------------------------------------------------- /sources_win/16-50.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | [66, -8, 43, 19, 0, -31] 4 | .iter() 5 | .filter(|x| { print!("F{} ", x); **x > 0 }) 6 | .map(|x| { print!("M{} ", x); *x * 2 }); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/17-02.rs: -------------------------------------------------------------------------------- 1 | // It prints the path used to run the program, 2 | // and all its command-line arguments, 3 | // each one enclosed in square brackets. 4 | fn main() { 5 | for a in std::env::args() { 6 | println!("[{}]", a); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/17-03.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | std::process::exit(107); 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/17-04.rs: -------------------------------------------------------------------------------- 1 | // It prints the list of current environment variables. 2 | fn main() { 3 | for var in std::env::vars() { 4 | println!("[{}]=[{}]", var.0, var.1); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/17-05.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | [Err(NotPresent)] [Ok("This is the value")]*/ 3 | fn main() { 4 | print!("[{:?}]", std::env::var("abcd")); 5 | std::env::set_var("abcd", "This is the value"); 6 | print!(" [{:?}]", std::env::var("abcd")); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/17-14.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 45 4.5 true*/ 3 | fn main() { 4 | let int_str: String = 45.to_string(); 5 | let float_str: String = 4.5.to_string(); 6 | let bool_str: String = true.to_string(); 7 | print!("{} {} {}", int_str, float_str, bool_str); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/18-01.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 100.00000000000003 3.1622776601683795*/ 3 | fn main() { 4 | fn quartic_root(x: f64) -> f64 { x.sqrt().sqrt() } 5 | let qr = quartic_root(100f64); 6 | print!("{} {}", qr * qr * qr * qr, qr); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/18-03.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn quartic_root(x: Number) -> Number { 4 | x.sqrt().sqrt() 5 | } 6 | print!("{} {}", 7 | quartic_root(100f64), 8 | quartic_root(100f32)); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/18-05.cpp: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | #include 3 | #include 4 | 5 | template 6 | Number quartic_root(Number x) { 7 | return sqrt(sqrt(x)); 8 | } 9 | 10 | int main() { 11 | std::cout << quartic_root("Hello"); 12 | } 13 | -------------------------------------------------------------------------------- /sources_win/18-07.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn _f1(a: T) -> T { a } 4 | fn _f2(a: T) -> T { 5 | let b: T = a; 6 | let mut c = b; 7 | c = _f1(c); 8 | c 9 | } 10 | fn _f3(a: &T) -> &T { a } 11 | } 12 | -------------------------------------------------------------------------------- /sources_win/18-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn g(a: i32) { } 4 | fn f(a: T) -> bool { 5 | g(a); 6 | a == a 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/18-09.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | A, B; B, A*/ 3 | fn main() { 4 | let mut a = 'A'; 5 | let mut b = 'B'; 6 | print!("{}, {}; ", a, b); 7 | std::mem::swap(&mut a, &mut b); 8 | print!("{}, {}", a, b); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/18-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 14*/ 3 | fn main() { 4 | fn double(x: i32) -> i32 { 5 | x * 2 6 | } 7 | print!("{}", double(7i32)); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/18-16.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn double(x: i32) -> i32 { 4 | x * 2 5 | } 6 | print!("{}", 7i32.double()); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/18-18.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn double(self) -> Self { 3 | fn double(self: Self) -> Self { 4 | fn double(self: i32) -> Self { 5 | fn double(self) -> i32 { 6 | fn double(self: Self) -> i32 { 7 | fn double(self: i32) -> i32 { 8 | -------------------------------------------------------------------------------- /sources_win/18-26.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 2.3 3.4*/ 3 | fn main() { 4 | fn f1(x: f32) -> f32 { x } 5 | fn f2(x: f32) -> f32 { x } 6 | let a: f32 = 2.3; 7 | let b: f32 = 3.4; 8 | print!("{} {}", f1(a), f2(b)); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/18-27.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 2.3 3.4*/ 3 | fn main() { 4 | type Number = f32; 5 | fn f1(x: Number) -> Number { x } 6 | fn f2(x: Number) -> Number { x } 7 | let a: Number = 2.3; 8 | let b: Number = 3.4; 9 | print!("{} {}", f1(a), f2(b)); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/18-28.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | type Number = f32; 4 | let a: Number = 2.3; 5 | let _b: f32 = a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/18-33.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Iterator { 4 | type Item; 5 | fn next(&mut self) -> Option; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/19-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 21*/ 3 | fn main() { 4 | S::f2(); 5 | impl S { fn f1() { print!("1"); } } 6 | impl S { } 7 | S::f1(); 8 | impl S { fn f2() { print!("2"); } fn _f3() {} } 9 | struct S {} 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/19-05.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | struct S1 {} 4 | struct S2 {} 5 | impl S1 { 6 | fn f() {} 7 | //ILLEGAL: fn f(a: i32) {} 8 | } 9 | impl S2 { 10 | fn f() {} 11 | } 12 | S1::f(); 13 | S2::f(); 14 | } 15 | -------------------------------------------------------------------------------- /sources_win/19-07.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | impl i32 {} 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/19-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | impl Vec {} 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/19-09.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | impl std::iter::Iterator for i32 {} 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/19-18.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn draw_text(txt) { 4 | txt.draw(); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/19-22.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr {} 4 | impl Tr for bool {} 5 | let _a: &Tr = &true; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/19-23.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | trait Tr {} 4 | let _a: &Tr = &true; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/21-01.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut a = 3; 4 | a = 4; 5 | let b = vec![11, 22, 33, 44, 55]; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/21-02.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3*/ 3 | fn main() { 4 | let a = 3; 5 | { 6 | let a_ref = &a; 7 | } 8 | print!("{}", a); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/21-07.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let v1 = vec![11, 22, 33]; 4 | let v2 = v1; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/21-08.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let v1 = vec![11, 22, 33]; 4 | let v2 = v1; 5 | print!("{}", v1.len()); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/21-10.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3 3*/ 3 | fn main() { 4 | let v1 = vec![11, 22, 33]; 5 | let v2 = v1.clone(); 6 | let v3 = v1; 7 | // ILLEGAL: print!("{} ", v1.len()); 8 | print!("{} {}", v2.len(), v3.len()); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/21-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 4 4*/ 3 | fn main() { 4 | let s1 = "abcd".to_string(); 5 | let s2 = s1.clone(); 6 | let s3 = s1; 7 | // ILLEGAL: print!("{} ", s1.len()); 8 | print!("{} {}", s2.len(), s3.len()); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/21-17.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12345 12345*/ 3 | fn main() { 4 | let i1 = Box::new(12345i16); 5 | let i2 = i1.clone(); 6 | let i3 = i1; 7 | // ILLEGAL: print!("{} ", i1); 8 | print!("{} {}", i2, i3); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/21-19.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let v1 = vec![false; 3]; 4 | let mut v2 = vec![false; 2]; 5 | v2 = v1; 6 | v1; 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/21-20.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f(v2: Vec) {} 4 | let v1 = vec![false; 3]; 5 | f(v1); 6 | v1; 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/21-21.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let v1 = vec![false; 0]; 4 | let mut v2 = vec![false; 0]; 5 | v2 = v1; 6 | v1; 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/21-22.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S {} 4 | let s1 = S {}; 5 | let s2 = s1; 6 | s1; 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/21-23.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 123 abc 123*/ 3 | fn main() { 4 | let i1 = 123; 5 | let _i2 = i1; 6 | let s1 = "abc"; 7 | let _s2 = s1; 8 | let r1 = &i1; 9 | let _r2 = r1; 10 | print!("{} {} {}", i1, s1, r1); 11 | } 12 | -------------------------------------------------------------------------------- /sources_win/21-25.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S {} 4 | let s = S {}; 5 | s.clone(); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/21-26.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | struct S {} 4 | impl Clone for S { 5 | fn clone(&self) -> Self { Self {} } 6 | } 7 | let s = S {}; 8 | s.clone(); 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/21-27.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S {} 4 | impl Clone for S { 5 | fn clone(&self) -> Self { Self {} } 6 | } 7 | let s = S {}; 8 | s.clone(); 9 | let _s2 = s; 10 | s; 11 | } 12 | -------------------------------------------------------------------------------- /sources_win/21-28.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | struct S {} 4 | impl Clone for S { 5 | fn clone(&self) -> Self { Self {} } 6 | } 7 | impl Copy for S {} 8 | let s = S {}; 9 | s.clone(); 10 | let _s2 = s; 11 | s; 12 | } 13 | -------------------------------------------------------------------------------- /sources_win/21-29.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S {} 4 | impl Copy for S {} 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/21-30.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S { x: Vec } 4 | impl Copy for S {} 5 | impl Clone for S { 6 | fn clone(&self) -> Self { *self } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/22-01.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let n = 12; 4 | let ref_to_n = &n; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/22-02.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut n = 12; 4 | let ref1_to_n = &mut n; 5 | let ref2_to_n = &n; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-03.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12*/ 3 | fn main() { 4 | let a; 5 | a = 12; 6 | print!("{}", a); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/22-04.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | Hello, world!*/ 3 | fn main() { 4 | let mut a = "Hello".to_string(); 5 | let mut b = a; 6 | print!("{}, ", b); 7 | a = "world".to_string(); 8 | print!("{}!", a); 9 | b = a; 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/22-05.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let ref_to_n; 4 | { 5 | let n = 12; 6 | ref_to_n = &n; 7 | print!("{} ", *ref_to_n); 8 | } 9 | print!("{}", *ref_to_n); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/22-07.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut v = vec![12]; 4 | let ref_to_first = &v[0]; 5 | v.push(13); 6 | print!("{}", ref_to_first); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/22-09.cpp: -------------------------------------------------------------------------------- 1 | // It has undefined behavior. Possibly it prints a number. 2 | #include 3 | #include 4 | int main() { 5 | std::vector v { 12 }; 6 | const int& ref_to_first = v[0]; 7 | v.push_back(13); 8 | std::cout << ref_to_first; 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/22-11.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let n = 12; 4 | let mut _r; 5 | let m = 13; 6 | _r = &m; 7 | _r = &n; 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/22-12.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let n = 12; 4 | let m = 13; 5 | let mut _r; 6 | _r = &m; 7 | _r = &n; 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/22-14.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let a = 12; 4 | let _b = &a; 5 | let _c = &a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-15.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12*/ 3 | fn main() { 4 | let mut a = 12; 5 | let _b = &a; 6 | print!("{}", a); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/22-16.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut a = 12; 4 | a = 13; 5 | let _b = &a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-17.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut a = 12; 4 | a = 13; 5 | let _b = &mut a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-18.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12*/ 3 | fn main() { 4 | let mut a = 12; 5 | print!("{}", a); 6 | let _b = &a; 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/22-19.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12*/ 3 | fn main() { 4 | let mut a = 12; 5 | print!("{}", a); 6 | let _b = &mut a; 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/22-20.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a = 12; 4 | let _b = &mut a; 5 | let _c = &a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-21.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a = 12; 4 | let _b = &a; 5 | let _c = &mut a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-22.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a = 12; 4 | let _b = &mut a; 5 | let _c = &mut a; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-23.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a = 12; 4 | let _b = &a; 5 | a = 13; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-24.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a = 12; 4 | let _b = &mut a; 5 | a = 13; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-25.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let mut a = 12; 4 | let _b = &mut a; 5 | print!("{}", a); 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-26.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut a = 12; 4 | { 5 | let b = &mut a; 6 | *b += 1; 7 | } 8 | let c = &mut a; 9 | *c += 2; 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/22-27.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let mut a = 12; 4 | fn f(b: &mut i32) { 5 | *b += 1; 6 | } 7 | f(&mut a); 8 | let c = &mut a; 9 | *c += 2; 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/22-32.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn func(v1: Vec, v2: &Vec) { 4 | let s = "Hello".to_string(); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-33.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn func() -> &str { 4 | "Hello" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-34.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn func(v: &Vec) -> &u8 { 4 | &v[3] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-35.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | trait Tr { 4 | fn f(flag: bool, b: &i32, c: (char, &i32)) -> (&i32, f64, &i32); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/22-36.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a>(flag: bool, b: &'a i32, c: (char, &'a i32)) 5 | -> (&'a i32, f64, &'static i32); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/22-37.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a>(flag: bool, b: &'a i32, c: (char, &i32)) 5 | -> (&'static i32, f64, &'a i32); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/22-38.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a, 'b, T1, T2>(flag: bool, b: &'a T1, c: (char, &'b i32)) 5 | -> (&'b i32, f64, &'a T2); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/22-40.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f(n: &u8) -> &'static u8 { 4 | n 5 | } 6 | print!("{}", *f(&12)); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/22-42.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f<'a, 'b>(x: &'a i32, y: &'b i32) -> (&'b i32, bool, &'a i32) { 4 | (x, true, y) 5 | } 6 | let i = 12; 7 | let j = 13; 8 | let r = f(&i, &j); 9 | print!("{} {} {}", *r.0, r.1, *r.2); 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/22-43.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 12 true 13*/ 3 | fn main() { 4 | fn f<'a>(x: &'a i32, y: &'a i32) -> (&'a i32, bool, &'a i32) { 5 | (x, true, y) 6 | } 7 | let i = 12; 8 | let j = 13; 9 | let r = f(&i, &j); 10 | print!("{} {} {}", *r.0, r.1, *r.2); 11 | } 12 | -------------------------------------------------------------------------------- /sources_win/22-44.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | fn f<'a>(n: i32, x: &'a Vec, y: &Vec) -> &'a u8 { 4 | if n == 0 { return &x[0]; } 5 | if n < 0 { &x[1] } else { &x[2] } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/22-45.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f<'a>(n: i32, x: &'a Vec, y: &Vec) -> &'a u8 { 4 | if n == 0 { return &x[0]; } 5 | if n < 0 { &x[1] } else { &y[2] } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/22-46.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | fn f<'a>(x: &'a Vec, y: &Vec) -> &'a u8 { 4 | if true { &x[0] } else { &y[0] } 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/23-01.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f(x: &u8) -> &u8; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/23-02.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a>(x: &'a u8) -> &'a u8; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/23-03.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f(b: bool, x: (u32, &u8)) -> &u8; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/23-04.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f(x: &u8) -> (&u8, &f64, bool, &Vec); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/23-05.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a>(x: &'a u8) -> (&u8, &'a f64, bool, &'static Vec); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/23-06.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f(&self, y: &u8) -> (&u8, &f64, bool, &Vec); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/23-07.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a>(&'a self, y: &u8) -> (&'a u8, &'a f64, bool, &'a Vec); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/23-08.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | trait Tr { 4 | fn f<'a>(&self, y: &'a u8) -> (&u8, &'a f64, bool, &Vec); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/23-09.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | let x: i32 = 12; 4 | let _y: &i32 = &x; 5 | } 6 | -------------------------------------------------------------------------------- /sources_win/23-10.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | let _y: &i32; 4 | let x: i32 = 12; 5 | _y = &x; 6 | } 7 | -------------------------------------------------------------------------------- /sources_win/23-11.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S { 4 | _b: bool, 5 | _ri: &i32, 6 | } 7 | let x: i32 = 12; 8 | let _y: S = S { _b: true, _ri: &x }; 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/23-12.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S { 4 | _b: bool, 5 | _ri: &i32, 6 | } 7 | let _y: S; 8 | let x: i32 = 12; 9 | _y = S { _b: true, _ri: &x }; 10 | } 11 | -------------------------------------------------------------------------------- /sources_win/23-15.rs: -------------------------------------------------------------------------------- 1 | // It does nothing. 2 | fn main() { 3 | struct S { _b: bool, _ri: &'static i32 } 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/23-17.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct _S1 { _f: &i32 } 4 | struct _S2<'a> { _f: &i32 } 5 | struct _S3 { _f: &'a i32 } 6 | struct _S4<'a> { _f: &'static i32 } 7 | struct _S5 { _f: &'static i32 } 8 | struct _S6<'a> { _f: &'a i32 } 9 | } 10 | -------------------------------------------------------------------------------- /sources_win/23-19.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 13*/ 3 | fn main() { 4 | fn f<'a>(b: &'a mut u8) -> &'a u8 { 5 | *b += 1; 6 | b 7 | } 8 | let mut byte = 12u8; 9 | let byte_ref = f(&mut byte); 10 | print!("{}", *byte_ref); 11 | } 12 | -------------------------------------------------------------------------------- /sources_win/23-20.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | 3.14*/ 3 | fn main() { 4 | fn f<'a, T>(b: &'a T) -> &'a T { b } 5 | let pi = 3.14; 6 | let pi_ref = f(&pi); 7 | print!("{}", *pi_ref); 8 | } 9 | -------------------------------------------------------------------------------- /sources_win/23-21.rs: -------------------------------------------------------------------------------- 1 | // ILLEGAL 2 | fn main() { 3 | struct S<'a, T> { b: &'a T } 4 | } 5 | -------------------------------------------------------------------------------- /sources_win/23-22.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true*/ 3 | fn main() { 4 | struct S<'a, T: 'static> { b: &'a T } 5 | let s = S { b: &true }; 6 | print!("{}", *s.b); 7 | } 8 | -------------------------------------------------------------------------------- /sources_win/23-23.rs: -------------------------------------------------------------------------------- 1 | /* It prints: 2 | true true*/ 3 | fn main() { 4 | struct S<'a, T: 'a> { b: &'a T } 5 | let s1 = S { b: &true }; 6 | let s2 = S { b: &s1 }; 7 | print!("{} {}", *s1.b, *s2.b.b); 8 | } 9 | --------------------------------------------------------------------------------